From 67af8f0b3cfb6286fea548620d958d0f27edd45f Mon Sep 17 00:00:00 2001 From: itttm127 Date: Mon, 6 Jan 2025 22:18:26 +0900 Subject: [PATCH] feat: update src20 auto suggest about #594 issue & error handling to SRC20 Search about #593 --- islands/stamp/StampSearch.tsx | 22 ++++++++++------------ server/database/src20Repository.ts | 23 +++++++++++++++-------- 2 files changed, 25 insertions(+), 20 deletions(-) diff --git a/islands/stamp/StampSearch.tsx b/islands/stamp/StampSearch.tsx index 3198ce11f..8b15e9d2f 100644 --- a/islands/stamp/StampSearch.tsx +++ b/islands/stamp/StampSearch.tsx @@ -53,7 +53,7 @@ export function StampSearchClient( const data = await response.json(); return data.n_tx > 0; } catch (error) { - console.log("Stamp Search Error=========>", error); + console.log("Validate Bitcoin Address Error=========>", error); return false; } }; @@ -67,7 +67,7 @@ export function StampSearchClient( // Check if response has basic tx properties return !!(data && data.hash && data.ver); } catch (error) { - console.log("Stamp Search Error=========>", error); + console.log("Validate BitCoin Tx Error=========>", error); return false; } }; @@ -141,12 +141,11 @@ export function StampSearchClient( } } catch (error) { console.log("Stamp Search Error=========>", error); + setError( + `NO STAMP FOUND\n${query}\nThe CPID doesn't seem to be valid`, + ); + return; } - - setError( - `NO STAMP FOUND\n${query}\nThe CPID doesn't seem to be valid`, - ); - return; } // Check for stamp number @@ -161,12 +160,11 @@ export function StampSearchClient( } } catch (error) { console.log("Stamp Search Error=========>", error); + setError( + `NO STAMP FOUND\n#${query}\nThe stamp you are looking for doesn't exist`, + ); + return; } - - setError( - `NO STAMP FOUND\n#${query}\nThe stamp you are looking for doesn't exist`, - ); - return; } setError( diff --git a/server/database/src20Repository.ts b/server/database/src20Repository.ts index 96f527f38..afeee6bd6 100644 --- a/server/database/src20Repository.ts +++ b/server/database/src20Repository.ts @@ -625,25 +625,32 @@ export class SRC20Repository { const sanitizedQuery = query.replace(/[^\w-]/g, ""); const sqlQuery = ` - SELECT DISTINCT - tick, + SELECT DISTINCT + tick, (SELECT COUNT(*) FROM ${SRC20_TABLE} WHERE tick = dep.tick AND op = 'MINT') AS total_mints, (SELECT COALESCE(SUM(amt), 0) FROM ${SRC20_BALANCE_TABLE} WHERE tick = dep.tick) AS total_minted, - dep.max AS max_supply, - dep.lim AS lim, + dep.max AS max_supply, + dep.lim AS lim, dep.deci AS decimals - FROM ${SRC20_TABLE} dep - WHERE + FROM ${SRC20_TABLE} dep + WHERE (tick LIKE ? OR tx_hash LIKE ? OR creator LIKE ? OR destination LIKE ?) AND dep.max IS NOT NULL - LIMIT 10; + ORDER BY + CASE + WHEN tick LIKE ? THEN 0 + ELSE 1 + END, + tick + LIMIT 10; `; const searchParam = `%${sanitizedQuery}%`; - const queryParams = [searchParam, searchParam, searchParam, searchParam]; + const startSearchParam = `${sanitizedQuery}%`; + const queryParams = [searchParam, searchParam, searchParam, searchParam, startSearchParam]; try { const result = await dbManager.executeQueryWithCache(