Skip to content

Commit

Permalink
feat: refactor getContract handler (#1087)
Browse files Browse the repository at this point in the history
  • Loading branch information
0xsign authored Nov 29, 2023
1 parent d01daac commit 6fddb60
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 13 deletions.
40 changes: 28 additions & 12 deletions src/db/contracts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,20 +304,22 @@ export async function getWalletInteractions(client: ClickHouseClient, address: s
}

export async function getContract(client: ClickHouseClient, chainId: number, address: string) {
// TODO: use explorers API
// TODO: use explorers API to lookup missing contracts (might have been created in Traces)
const queryRes = await client.query({
query: `
SELECT
"chain",
"hash",
"timestamp",
"from",
"creator",
"transaction_hash",
"name",
"abi",
"verified",
"block_number",
"contract_created"
FROM evm_indexer.transactions
"timestamp"
FROM ${environment.NS_LF}.contracts
WHERE
"chain" = {chainId: UInt64} AND
"contract_created" = {address: String};
"address" = {address: String};
`,
query_params: {
address: address.toLowerCase(),
Expand All @@ -326,19 +328,33 @@ export async function getContract(client: ClickHouseClient, chainId: number, add
})

const res = (await queryRes.json()) as {
data: { chain: string; hash: string; timestamp: string; from: string; block_number: string }[]
data: {
chain: string
creator: string
transaction_hash: string
name: string
abi: string | null
verified: boolean | null
block_number: string
timestamp: string
}[]
}

if (res.data.length === 0) {
return null
}

const row = res.data[0]

return {
block: parseInt(res.data[0].block_number),
chain: chainByChainId[parseInt(res.data[0].chain)]?.id,
block: parseInt(row.block_number),
chain: chainByChainId[parseInt(row.chain)]?.id,
contract: address,
creator: res.data[0].from,
hash: res.data[0].hash,
creator: row.creator,
hash: row.transaction_hash,
verified: row.verified,
abi: row.abi ? JSON.parse(row.abi) : null,
name: row.name,
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/handlers/getContract.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ export interface IContract {
contract: string
creator: string
hash: string
verified?: boolean
verified?: boolean | null
abi?: any
name?: string
}
Expand Down

0 comments on commit 6fddb60

Please sign in to comment.