diff --git a/.github/workflows/indexer.yml b/.github/workflows/indexer.yml index f7a0d689..6c2d9cf0 100644 --- a/.github/workflows/indexer.yml +++ b/.github/workflows/indexer.yml @@ -13,10 +13,10 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Use Node.js 18 - uses: actions/setup-node@v2 + uses: actions/setup-node@v4 with: node-version: '18' cache: 'yarn' diff --git a/indexer/src/kadena-server/repository/application/transfer-repository.ts b/indexer/src/kadena-server/repository/application/transfer-repository.ts index 238e9504..8701eacc 100644 --- a/indexer/src/kadena-server/repository/application/transfer-repository.ts +++ b/indexer/src/kadena-server/repository/application/transfer-repository.ts @@ -24,6 +24,7 @@ export interface GetTotalCountParams { export interface GetCrossChainTransferByPactIdParams { pactId: string; amount: string; + requestKey: string; } export type TransferOutput = Omit & { @@ -43,6 +44,6 @@ export default interface TransferRepository { }>; getCrossChainTransferByPactId( params: GetCrossChainTransferByPactIdParams, - ): Promise; + ): Promise; getTotalCountOfTransfers(params: GetTotalCountParams): Promise; } diff --git a/indexer/src/kadena-server/repository/infra/repository/transfer-db-repository.ts b/indexer/src/kadena-server/repository/infra/repository/transfer-db-repository.ts index 2c5e290c..6a3e8875 100644 --- a/indexer/src/kadena-server/repository/infra/repository/transfer-db-repository.ts +++ b/indexer/src/kadena-server/repository/infra/repository/transfer-db-repository.ts @@ -210,7 +210,25 @@ export default class TransferDbRepository implements TransferRepository { return pageInfo; } - async getCrossChainTransferByPactId({ amount, pactId }: GetCrossChainTransferByPactIdParams) { + async getCrossChainTransferByPactId({ + amount, + pactId, + requestKey, + }: GetCrossChainTransferByPactIdParams) { + let requestKeyParam = pactId; + + if (pactId === requestKey) { + const query = ` + SELECT requestkey + FROM "Transactions" t + JOIN "TransactionDetails" td ON t.id = td."transactionId" + WHERE td.pactid = $1 AND requestkey != $1 + `; + const { rows } = await rootPgPool.query(query, [requestKey]); + const row = rows[0]; + requestKeyParam = row.requestkey; + } + const query = ` select transfers.id as id, transfers.amount as "transferAmount", @@ -234,9 +252,10 @@ export default class TransferDbRepository implements TransferRepository { and transfers.amount = $2 `; - const { rows } = await rootPgPool.query(query, [pactId, amount]); + const { rows } = await rootPgPool.query(query, [requestKeyParam, amount]); const [row] = rows; + if (!row) return null; const output = transferSchemaValidator.validate(row); return output; } diff --git a/indexer/src/kadena-server/resolvers/fields/transfer/cross-chain-transfer-transfer-resolver.ts b/indexer/src/kadena-server/resolvers/fields/transfer/cross-chain-transfer-transfer-resolver.ts index 88188e6f..8b69b8c4 100644 --- a/indexer/src/kadena-server/resolvers/fields/transfer/cross-chain-transfer-transfer-resolver.ts +++ b/indexer/src/kadena-server/resolvers/fields/transfer/cross-chain-transfer-transfer-resolver.ts @@ -5,18 +5,22 @@ import { buildTransferOutput } from '../../output/build-transfer-output'; const schema = zod.object({ pactId: zod.string().nullable(), + requestKey: zod.string(), amount: zod.string(), }); export const crossChainTransferTransferResolver: TransferResolvers['crossChainTransfer'] = async (parent, _args, context) => { - const { pactId, amount } = schema.parse(parent); + const { pactId, requestKey, amount } = schema.parse(parent); if (!pactId) return null; const output = await context.transferRepository.getCrossChainTransferByPactId({ pactId, + requestKey, amount, }); + if (!output) return null; + return buildTransferOutput(output); };