From d64ceedd04fa8c8c01c2e1a5b35ddf62249b9b3c Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Wed, 19 Jun 2024 11:46:22 +0200 Subject: [PATCH] let fetching gdt sum running parallel --- backend/src/graphql/resolver/BalanceResolver.ts | 10 ++++++---- backend/src/graphql/resolver/TransactionResolver.ts | 7 +++++++ backend/src/server/context.ts | 1 + 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/BalanceResolver.ts b/backend/src/graphql/resolver/BalanceResolver.ts index e101a36d7..6f303ea2f 100644 --- a/backend/src/graphql/resolver/BalanceResolver.ts +++ b/backend/src/graphql/resolver/BalanceResolver.ts @@ -29,13 +29,15 @@ export class BalanceResolver { logger.addContext('user', user.id) logger.info(`balance(userId=${user.id})...`) - const gdtResolver = new GdtResolver() - const balanceGDT = await gdtResolver.gdtBalance(context) + if(!context.balanceGDT) { + const gdtResolver = new GdtResolver() + context.balanceGDT = await gdtResolver.gdtBalance(context) + } logger.info(`time for load gdt balance: ${new Date().getTime() - now.getTime()} ms`) let profilingTime = new Date() - logger.debug(`balanceGDT=${balanceGDT}`) + logger.debug(`balanceGDT=${context.balanceGDT}`) const lastTransaction = context.lastTransaction ? context.lastTransaction @@ -55,7 +57,7 @@ export class BalanceResolver { logger.info(`no balance found, return Default-Balance!`) return new Balance({ balance: new Decimal(0), - balanceGDT, + balanceGDT: context.balanceGDT, count: 0, linkCount: 0, }) diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 8c1bbf787..eba5102e2 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -49,6 +49,7 @@ import { import { sendTransactionsToDltConnector } from './util/sendTransactionsToDltConnector' import { storeForeignUser } from './util/storeForeignUser' import { transactionLinkSummary } from './util/transactionLinkSummary' +import { GdtResolver } from './GdtResolver' export const executeTransaction = async ( amount: Decimal, @@ -229,6 +230,9 @@ export class TransactionResolver { logger.addContext('user', user.id) logger.info(`transactionList(user=${user.firstName}.${user.lastName}, ${user.emailId})`) + const gdtResolver = new GdtResolver() + const balanceGDTPromise = gdtResolver.gdtBalance(context) + // find current balance const lastTransaction = await getLastTransaction(user.id) logger.debug(`lastTransaction=${lastTransaction}`) @@ -442,6 +446,9 @@ export class TransactionResolver { } ms`, ) profilingTime = new Date() + const balanceGDT = await balanceGDTPromise + context.balanceGDT = balanceGDT + // Construct Result return new TransactionList(await balanceResolver.balance(context), transactions) } diff --git a/backend/src/server/context.ts b/backend/src/server/context.ts index 45f0a6c1f..a6038271c 100644 --- a/backend/src/server/context.ts +++ b/backend/src/server/context.ts @@ -16,6 +16,7 @@ export interface Context { gradidoID?: string // hack to use less DB calls for Balance Resolver lastTransaction?: dbTransaction | null + balanceGDT?: number | null transactionCount?: number linkCount?: number sumHoldAvailableAmount?: Decimal