Skip to content

Commit 523fd69

Browse files
authored
Merge pull request #479 from hack-a-chain-software/issue-475
fix: added hasTokenId to all transfers fields and their counters
2 parents 7af474f + a074eed commit 523fd69

File tree

12 files changed

+52
-34
lines changed

12 files changed

+52
-34
lines changed

indexer/src/kadena-server/repository/application/transfer-repository.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ export type GetTransfersParams = GetTotalCountParams &
1010

1111
export type GetTransfersByTransactionIdParams = {
1212
transactionId: string;
13+
hasTokenId?: boolean | null;
1314
} & PaginationsParams;
1415

1516
export interface GetTotalCountParams {

indexer/src/kadena-server/repository/infra/repository/transfer-db-repository.ts

Lines changed: 21 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,6 @@ export default class TransferDbRepository implements TransferRepository {
7777
const queryParams: (string | number | boolean)[] = [limit];
7878
let conditions = '';
7979

80-
if (hasTokenId) {
81-
queryParams.push('marmalade-v2.ledger');
82-
const op = operator(queryParams.length);
83-
queryParams.push('marmalade.ledger');
84-
conditions += `\n${op} transfers.modulename IN ($${queryParams.length - 1}, $${queryParams.length})`;
85-
}
86-
8780
if (after) {
8881
const [creationTime, id] = after.split(':');
8982
queryParams.push(creationTime);
@@ -136,6 +129,10 @@ export default class TransferDbRepository implements TransferRepository {
136129
conditions += `\n${op} b.hash = $${queryParams.length}`;
137130
}
138131

132+
queryParams.push(hasTokenId ?? false);
133+
const op = operator(queryParams.length);
134+
conditions += `\n${op} transfers."hasTokenId" = $${queryParams.length}`;
135+
139136
let query = '';
140137
if (accountName) {
141138
queryParams.push(accountName);
@@ -293,7 +290,7 @@ export default class TransferDbRepository implements TransferRepository {
293290

294291
const { blockHash, accountName, chainId, transactionId, fungibleName, requestKey, hasTokenId } =
295292
params;
296-
const queryParams: (string | number)[] = [];
293+
const queryParams: (string | number | boolean)[] = [];
297294
let conditions = '';
298295

299296
const localOperator = (length: number) => (length > 1 ? `\nAND` : 'WHERE');
@@ -328,19 +325,16 @@ export default class TransferDbRepository implements TransferRepository {
328325
conditions += `${op} trans.modulename = $${queryParams.length}`;
329326
}
330327

331-
if (hasTokenId) {
332-
queryParams.push('marmalade-v2.ledger');
333-
queryParams.push('marmalade.ledger');
334-
const op = localOperator(queryParams.length);
335-
conditions += `${op} trans.modulename IN ($${queryParams.length - 1}, $${queryParams.length})`;
336-
}
337-
338328
if (requestKey) {
339329
queryParams.push(requestKey);
340330
const op = localOperator(queryParams.length);
341331
conditions += `${op} t.requestkey = $${queryParams.length}`;
342332
}
343333

334+
queryParams.push(hasTokenId ?? false);
335+
const op = localOperator(queryParams.length);
336+
conditions += `${op} trans."hasTokenId" = $${queryParams.length}`;
337+
344338
const totalCountQuery = `
345339
SELECT COUNT(*) as count
346340
FROM "Transfers" trans
@@ -366,7 +360,14 @@ export default class TransferDbRepository implements TransferRepository {
366360
* @returns Promise resolving to page info and transfer edges
367361
*/
368362
async getTransfersByTransactionId(params: GetTransfersByTransactionIdParams) {
369-
const { transactionId, after: afterEncoded, before: beforeEncoded, first, last } = params;
363+
const {
364+
transactionId,
365+
after: afterEncoded,
366+
before: beforeEncoded,
367+
first,
368+
last,
369+
hasTokenId,
370+
} = params;
370371

371372
const { limit, order, after, before } = getPaginationParams({
372373
after: afterEncoded,
@@ -375,17 +376,17 @@ export default class TransferDbRepository implements TransferRepository {
375376
last,
376377
});
377378

378-
const queryParams: (string | number)[] = [limit, transactionId];
379-
let conditions = '';
379+
const queryParams: (string | number | boolean)[] = [limit, transactionId, hasTokenId ?? false];
380+
let conditions = '\nAND transfers."hasTokenId" = $3';
380381

381382
if (before) {
382383
queryParams.push(before);
383-
conditions += `\nAND transfers.id > $3`;
384+
conditions += `\nAND transfers.id > $4`;
384385
}
385386

386387
if (after) {
387388
queryParams.push(after);
388-
conditions += `\nAND transfers.id < $3`;
389+
conditions += `\nAND transfers.id < $4`;
389390
}
390391

391392
const query = `
@@ -402,12 +403,10 @@ export default class TransferDbRepository implements TransferRepository {
402403
transfers.modulehash as "moduleHash",
403404
transfers.requestkey as "requestKey",
404405
transfers."orderIndex" as "orderIndex",
405-
td.pactid as "pactId",
406406
transfers."tokenId" as "tokenId"
407407
from "Blocks" b
408408
join "Transactions" transactions on b.id = transactions."blockId"
409409
join "Transfers" transfers on transfers."transactionId" = transactions.id
410-
left join "TransactionDetails" td on transactions.id = td."transactionId"
411410
WHERE transactions.id = $2
412411
${conditions}
413412
ORDER BY transfers.id ${order}

indexer/src/kadena-server/resolvers/fields/fungible-account/transfers-connection/total-count-fungible-account-transfers-connection-resolver.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import zod from 'zod';
1313
const schema = zod.object({
1414
accountName: zod.string(),
1515
fungibleName: zod.string(),
16+
hasTokenId: zod.boolean(),
1617
});
1718

1819
/**
@@ -26,11 +27,12 @@ const schema = zod.object({
2627
*/
2728
export const totalCountFungibleAccountTransfersConnectionResolver: FungibleAccountTransfersConnectionResolvers<ResolverContext>['totalCount'] =
2829
async (parent, _args, context) => {
29-
const { accountName, fungibleName } = schema.parse(parent);
30+
const { accountName, fungibleName, hasTokenId } = schema.parse(parent);
3031

3132
const output = await context.transferRepository.getTotalCountOfTransfers({
3233
accountName,
3334
fungibleName,
35+
hasTokenId,
3436
});
3537
return output;
3638
};

indexer/src/kadena-server/resolvers/fields/fungible-account/transfers-fungible-account-resolver.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,11 @@ import { buildTransferOutput } from '../../output/build-transfer-output';
2020
export const transfersFungibleAccountResolver: FungibleAccountResolvers<ResolverContext>['transfers'] =
2121
async (parent, args, context) => {
2222
const { first, after, before, last } = args;
23+
const hasTokenId = false;
2324
const output = await context.transferRepository.getTransfers({
2425
accountName: parent.accountName,
2526
fungibleName: parent.fungibleName,
27+
hasTokenId,
2628
after,
2729
first,
2830
last,
@@ -41,6 +43,7 @@ export const transfersFungibleAccountResolver: FungibleAccountResolvers<Resolver
4143
// for resolvers
4244
accountName: parent.accountName,
4345
fungibleName: parent.fungibleName,
46+
hasTokenId,
4447
totalCount: -1, // Placeholder value; actual count is resolved by a separate resolver
4548
};
4649
};

indexer/src/kadena-server/resolvers/fields/fungible-chain-account/transfers-connection/total-count-fungible-chain-account-transfers-connection-resolver.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ const schema = zod.object({
1414
accountName: zod.string(),
1515
chainId: zod.string(),
1616
fungibleName: zod.string(),
17+
hasTokenId: zod.boolean(),
1718
});
1819

1920
/**
@@ -27,12 +28,13 @@ const schema = zod.object({
2728
*/
2829
export const totalCountFungibleChainAccountTransfersConnectionResolver: FungibleChainAccountTransfersConnectionResolvers<ResolverContext>['totalCount'] =
2930
async (parent, _args, context) => {
30-
const { accountName, chainId, fungibleName } = schema.parse(parent);
31+
const { accountName, chainId, fungibleName, hasTokenId } = schema.parse(parent);
3132

3233
const output = await context.transferRepository.getTotalCountOfTransfers({
3334
accountName,
3435
chainId,
3536
fungibleName,
37+
hasTokenId,
3638
});
3739
return output;
3840
};

indexer/src/kadena-server/resolvers/fields/fungible-chain-account/transfers-fungible-chain-account-resolver.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ import { buildTransferOutput } from '../../output/build-transfer-output';
1717
export const transfersFungibleChainAccountResolver: FungibleChainAccountResolvers<ResolverContext>['transfers'] =
1818
async (parent, args, context) => {
1919
const { first, after, last, before } = args;
20+
const hasTokenId = false;
2021
const output = await context.transferRepository.getTransfers({
2122
accountName: parent.accountName,
2223
fungibleName: parent.fungibleName,
2324
chainId: parent.chainId,
25+
hasTokenId,
2426
after,
2527
first,
2628
last,
@@ -37,6 +39,7 @@ export const transfersFungibleChainAccountResolver: FungibleChainAccountResolver
3739
pageInfo: output.pageInfo,
3840
// for resolvers
3941
totalCount: -1, // Placeholder value for separate resolver
42+
hasTokenId,
4043
accountName: parent.accountName,
4144
chainId: parent.chainId,
4245
fungibleName: parent.fungibleName,

indexer/src/kadena-server/resolvers/fields/non-fungible-account/transfers-connection/total-count-non-fungible-account-transfers-connection-resolver.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import zod from 'zod';
1212
*/
1313
const schema = zod.object({
1414
accountName: zod.string(),
15+
hasTokenId: zod.boolean(),
1516
});
1617

1718
/**
@@ -25,11 +26,11 @@ const schema = zod.object({
2526
*/
2627
export const totalCountNonFungibleAccountTransfersConnectionResolver: NonFungibleAccountTransfersConnectionResolvers<ResolverContext>['totalCount'] =
2728
async (parent, _args, context) => {
28-
const { accountName } = schema.parse(parent);
29+
const { accountName, hasTokenId } = schema.parse(parent);
2930

3031
const output = await context.transferRepository.getTotalCountOfTransfers({
3132
accountName,
32-
hasTokenId: true,
33+
hasTokenId,
3334
});
3435

3536
return output;

indexer/src/kadena-server/resolvers/fields/non-fungible-account/transfers-non-fungible-account-resolver.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,10 @@ import { buildTransferOutput } from '../../output/build-transfer-output';
2020
export const transfersNonFungibleAccountResolver: NonFungibleAccountResolvers<ResolverContext>['transfers'] =
2121
async (parent, args, context) => {
2222
const { first, after, before, last } = args;
23+
const hasTokenId = true;
2324
const output = await context.transferRepository.getTransfers({
2425
accountName: parent.accountName,
25-
hasTokenId: true,
26+
hasTokenId,
2627
after,
2728
first,
2829
last,
@@ -40,7 +41,7 @@ export const transfersNonFungibleAccountResolver: NonFungibleAccountResolvers<Re
4041

4142
// for resolvers
4243
accountName: parent.accountName,
43-
hasTokenId: true,
44+
hasTokenId,
4445
totalCount: -1, // Placeholder value; actual count is resolved by a separate resolver
4546
};
4647
};

indexer/src/kadena-server/resolvers/fields/non-fungible-chain-account/transfers-connection/total-count-non-fungible-chain-account-transfers-connection-resolver.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import zod from 'zod';
1313
const schema = zod.object({
1414
accountName: zod.string(),
1515
chainId: zod.string(),
16+
hasTokenId: zod.boolean(),
1617
});
1718

1819
/**
@@ -26,12 +27,12 @@ const schema = zod.object({
2627
*/
2728
export const totalCountNonFungibleChainAccountTransfersConnectionResolver: NonFungibleChainAccountTransfersConnectionResolvers<ResolverContext>['totalCount'] =
2829
async (parent, _args, context) => {
29-
const { accountName, chainId } = schema.parse(parent);
30+
const { accountName, chainId, hasTokenId } = schema.parse(parent);
3031

3132
const output = await context.transferRepository.getTotalCountOfTransfers({
3233
accountName,
3334
chainId,
34-
hasTokenId: true,
35+
hasTokenId,
3536
});
3637

3738
return output;

indexer/src/kadena-server/resolvers/fields/non-fungible-chain-account/transfers-non-fungible-chain-account-resolver.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,11 @@ import { buildTransferOutput } from '../../output/build-transfer-output';
2020
export const transfersNonFungibleChainAccountResolver: NonFungibleChainAccountResolvers<ResolverContext>['transfers'] =
2121
async (parent, args, context) => {
2222
const { first, after, before, last } = args;
23+
const hasTokenId = true;
2324
const output = await context.transferRepository.getTransfers({
2425
accountName: parent.accountName,
2526
chainId: parent.chainId,
26-
hasTokenId: true,
27+
hasTokenId,
2728
after,
2829
first,
2930
last,
@@ -42,7 +43,7 @@ export const transfersNonFungibleChainAccountResolver: NonFungibleChainAccountRe
4243
// for resolvers
4344
accountName: parent.accountName,
4445
chainId: parent.chainId,
45-
hasTokenId: true,
46+
hasTokenId,
4647
totalCount: -1, // Placeholder value; actual count is resolved by a separate resolver
4748
};
4849
};

0 commit comments

Comments
 (0)