From 40dff503646a758546856db156c6ec7f31d9b778 Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 10 Dec 2021 11:54:00 +0100 Subject: [PATCH 1/4] state-balance balanceDate can't get the date of the last transaction cause creation is a new transaction. --- backend/src/graphql/resolver/AdminResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 749f2f591..8bc95280d 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -196,7 +196,7 @@ export class AdminResolver { userBalance.userId = pendingCreation.userId userBalance.amount = Number(newBalance) userBalance.modified = new Date() - userBalance.recordDate = userBalance.recordDate ? userBalance.recordDate : new Date() + userBalance.recordDate = new Date() await balanceRepository.save(userBalance) await pendingCreationRepository.delete(pendingCreation) From cb3c6002169a738e14822d5df5241f0da6dfac57 Mon Sep 17 00:00:00 2001 From: elweyn Date: Fri, 10 Dec 2021 12:10:38 +0100 Subject: [PATCH 2/4] Adding decay calculation to the creation. --- backend/src/graphql/resolver/AdminResolver.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 8bc95280d..4296ba049 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -16,6 +16,7 @@ import { TransactionCreation } from '@entity/TransactionCreation' import { UserTransaction } from '@entity/UserTransaction' import { UserTransactionRepository } from '../../typeorm/repository/UserTransaction' import { BalanceRepository } from '../../typeorm/repository/Balance' +import { calculateDecay } from '../../util/decay' @Resolver() export class AdminResolver { @@ -174,7 +175,11 @@ export class AdminResolver { if (!lastUserTransaction) { newBalance = 0 } else { - newBalance = lastUserTransaction.balance + newBalance = await calculateDecay( + lastUserTransaction.balance, + lastUserTransaction.balanceDate, + new Date(), + ) } newBalance = Number(newBalance) + Number(parseInt(pendingCreation.amount.toString())) From 284984c2965d7f6a338ffd4103c82da2bd08fa43 Mon Sep 17 00:00:00 2001 From: elweyn Date: Mon, 13 Dec 2021 11:24:09 +0100 Subject: [PATCH 3/4] When creating coins we store the receivedDate at the start of the call and write this value in each date field. --- backend/src/graphql/resolver/AdminResolver.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 4296ba049..db587aa0d 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -146,6 +146,7 @@ export class AdminResolver { @Mutation(() => Boolean) async confirmPendingCreation(@Arg('id') id: number): Promise { + const receivedCallDate = new Date() const pendingCreationRepository = getCustomRepository(PendingCreationRepository) const pendingCreation = await pendingCreationRepository.findOneOrFail(id) @@ -153,7 +154,7 @@ export class AdminResolver { let transaction = new Transaction() transaction.transactionTypeId = 1 transaction.memo = pendingCreation.memo - transaction.received = new Date() + transaction.received = receivedCallDate transaction.blockchainTypeId = 1 transaction = await transactionRepository.save(transaction) if (!transaction) throw new Error('Could not create transaction') @@ -178,7 +179,7 @@ export class AdminResolver { newBalance = await calculateDecay( lastUserTransaction.balance, lastUserTransaction.balanceDate, - new Date(), + receivedCallDate, ) } newBalance = Number(newBalance) + Number(parseInt(pendingCreation.amount.toString())) @@ -200,8 +201,8 @@ export class AdminResolver { if (!userBalance) userBalance = balanceRepository.create() userBalance.userId = pendingCreation.userId userBalance.amount = Number(newBalance) - userBalance.modified = new Date() - userBalance.recordDate = new Date() + userBalance.modified = receivedCallDate + userBalance.recordDate = receivedCallDate await balanceRepository.save(userBalance) await pendingCreationRepository.delete(pendingCreation) From fb001b88862af1a1506ba5a632a60116fcb13318 Mon Sep 17 00:00:00 2001 From: elweyn Date: Mon, 13 Dec 2021 11:26:30 +0100 Subject: [PATCH 4/4] Change emplacement of receivedDate after possible errors so we don't create the object when we don't need it. --- backend/src/graphql/resolver/AdminResolver.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index db587aa0d..27e60815b 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -146,11 +146,11 @@ export class AdminResolver { @Mutation(() => Boolean) async confirmPendingCreation(@Arg('id') id: number): Promise { - const receivedCallDate = new Date() const pendingCreationRepository = getCustomRepository(PendingCreationRepository) const pendingCreation = await pendingCreationRepository.findOneOrFail(id) const transactionRepository = getCustomRepository(TransactionRepository) + const receivedCallDate = new Date() let transaction = new Transaction() transaction.transactionTypeId = 1 transaction.memo = pendingCreation.memo