Skip to content

Commit a8d9d5b

Browse files
authored
SQL storage filter success matches when multiple entries are in db (#212)
1 parent 9c3d850 commit a8d9d5b

File tree

3 files changed

+15
-6
lines changed

3 files changed

+15
-6
lines changed

.changeset/wild-parents-rhyme.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@3loop/transaction-decoder': patch
3+
---
4+
5+
SQL Storage filter success matches from database for cases when multiple matches are stored in database

packages/transaction-decoder/src/sql/abi-store.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,13 +107,15 @@ export const make = (strategies: AbiStore['strategies']) =>
107107
Effect.catchAll(() => Effect.succeed([])),
108108
)
109109

110+
const successItems = items.filter((item) => item.status === 'success')
111+
110112
const item =
111-
items.find((item) => {
113+
successItems.find((item) => {
112114
// Prioritize address over fragments
113115
return item.type === 'address'
114-
}) ?? items[0]
116+
}) ?? successItems[0]
115117

116-
if (item != null && item.status === 'success') {
118+
if (item != null) {
117119
return {
118120
status: 'success',
119121
result: {
@@ -125,7 +127,7 @@ export const make = (strategies: AbiStore['strategies']) =>
125127
abi: item.abi,
126128
},
127129
} as ContractAbiResult
128-
} else if (item != null && item.status === 'not-found') {
130+
} else if (items[0] != null && items[0].status === 'not-found') {
129131
return {
130132
status: 'not-found',
131133
result: null,

packages/transaction-decoder/src/sql/contract-meta-store.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,9 @@ export const make = (strategies: ContractMetaStore['strategies']) =>
7777
Effect.catchAll(() => Effect.succeed([])),
7878
)
7979

80-
const item = items[0]
80+
const successItems = items.filter((item) => item.status === 'success')
81+
82+
const item = successItems[0]
8183

8284
if (item != null && item.status === 'success') {
8385
return {
@@ -92,7 +94,7 @@ export const make = (strategies: ContractMetaStore['strategies']) =>
9294
chainID,
9395
} as ContractData,
9496
}
95-
} else if (item != null && item.status === 'not-found') {
97+
} else if (items[0] != null && items[0].status === 'not-found') {
9698
return {
9799
status: 'not-found',
98100
result: null,

0 commit comments

Comments
 (0)