From 49e4390fd97380a7cb5f061ab26a7e330749c060 Mon Sep 17 00:00:00 2001 From: Gheorghe Pinzaru Date: Sat, 15 Feb 2025 14:35:33 +0700 Subject: [PATCH] SQL storage filter success matches when multiple entries are in db --- .changeset/wild-parents-rhyme.md | 5 +++++ packages/transaction-decoder/src/sql/abi-store.ts | 10 ++++++---- .../transaction-decoder/src/sql/contract-meta-store.ts | 6 ++++-- 3 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 .changeset/wild-parents-rhyme.md diff --git a/.changeset/wild-parents-rhyme.md b/.changeset/wild-parents-rhyme.md new file mode 100644 index 00000000..608799aa --- /dev/null +++ b/.changeset/wild-parents-rhyme.md @@ -0,0 +1,5 @@ +--- +'@3loop/transaction-decoder': patch +--- + +SQL Storage filter success matches from database for cases when multiple matches are stored in database diff --git a/packages/transaction-decoder/src/sql/abi-store.ts b/packages/transaction-decoder/src/sql/abi-store.ts index 7617010e..3dda7050 100644 --- a/packages/transaction-decoder/src/sql/abi-store.ts +++ b/packages/transaction-decoder/src/sql/abi-store.ts @@ -107,13 +107,15 @@ export const make = (strategies: AbiStore['strategies']) => Effect.catchAll(() => Effect.succeed([])), ) + const successItems = items.filter((item) => item.status === 'success') + const item = - items.find((item) => { + successItems.find((item) => { // Prioritize address over fragments return item.type === 'address' - }) ?? items[0] + }) ?? successItems[0] - if (item != null && item.status === 'success') { + if (item != null) { return { status: 'success', result: { @@ -125,7 +127,7 @@ export const make = (strategies: AbiStore['strategies']) => abi: item.abi, }, } as ContractAbiResult - } else if (item != null && item.status === 'not-found') { + } else if (items[0] != null && items[0].status === 'not-found') { return { status: 'not-found', result: null, diff --git a/packages/transaction-decoder/src/sql/contract-meta-store.ts b/packages/transaction-decoder/src/sql/contract-meta-store.ts index 93df6058..662a864c 100644 --- a/packages/transaction-decoder/src/sql/contract-meta-store.ts +++ b/packages/transaction-decoder/src/sql/contract-meta-store.ts @@ -77,7 +77,9 @@ export const make = (strategies: ContractMetaStore['strategies']) => Effect.catchAll(() => Effect.succeed([])), ) - const item = items[0] + const successItems = items.filter((item) => item.status === 'success') + + const item = successItems[0] if (item != null && item.status === 'success') { return { @@ -92,7 +94,7 @@ export const make = (strategies: ContractMetaStore['strategies']) => chainID, } as ContractData, } - } else if (item != null && item.status === 'not-found') { + } else if (items[0] != null && items[0].status === 'not-found') { return { status: 'not-found', result: null,