From 3a35cbfee56baeac3046002f0a4765c7459b573d Mon Sep 17 00:00:00 2001 From: Ulf Gebhardt Date: Thu, 24 Feb 2022 00:41:44 +0100 Subject: [PATCH] fixed backend for new migration properly write linked Transactions when sendCoin --- backend/src/config/index.ts | 2 +- backend/src/graphql/resolver/AdminResolver.ts | 4 +--- .../graphql/resolver/TransactionResolver.ts | 23 +++++++++---------- 3 files changed, 13 insertions(+), 16 deletions(-) diff --git a/backend/src/config/index.ts b/backend/src/config/index.ts index 3dbf052b1..e26272436 100644 --- a/backend/src/config/index.ts +++ b/backend/src/config/index.ts @@ -4,7 +4,7 @@ import dotenv from 'dotenv' dotenv.config() const constants = { - DB_VERSION: '0025-combine_transaction_tables2', + DB_VERSION: '0026-clean_transaction_table', DECAY_START_TIME: new Date('2021-05-13 17:46:31'), // GMT+0 } diff --git a/backend/src/graphql/resolver/AdminResolver.ts b/backend/src/graphql/resolver/AdminResolver.ts index 916525d02..17df7b384 100644 --- a/backend/src/graphql/resolver/AdminResolver.ts +++ b/backend/src/graphql/resolver/AdminResolver.ts @@ -318,13 +318,11 @@ export class AdminResolver { newBalance = Number(newBalance) + Number(parseInt(pendingCreation.amount.toString())) let transaction = new Transaction() - transaction.transactionTypeId = TransactionTypeId.CREATION + transaction.typeId = TransactionTypeId.CREATION transaction.memo = pendingCreation.memo - transaction.received = receivedCallDate transaction.userId = pendingCreation.userId transaction.amount = BigInt(parseInt(pendingCreation.amount.toString())) transaction.creationDate = pendingCreation.date - transaction.transactionId = randomInt(99999) transaction.balance = BigInt(newBalance) transaction.balanceDate = receivedCallDate transaction = await transaction.save() diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 919ab093b..fcb18ba0a 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -135,8 +135,8 @@ export class TransactionResolver { userTransactions.forEach((transaction: dbTransaction) => { involvedUserIds.push(transaction.userId) if ( - transaction.transactionTypeId === TransactionTypeId.SEND || - transaction.transactionTypeId === TransactionTypeId.RECEIVE + transaction.typeId === TransactionTypeId.SEND || + transaction.typeId === TransactionTypeId.RECEIVE ) { // eslint-disable-next-line @typescript-eslint/no-non-null-assertion involvedUserIds.push(transaction.linkedUserId!) // TODO ensure not null properly @@ -152,7 +152,7 @@ export class TransactionResolver { const userTransaction = userTransactions[i] const finalTransaction = new Transaction() finalTransaction.transactionId = userTransaction.id - finalTransaction.date = userTransaction.received.toISOString() + finalTransaction.date = userTransaction.balanceDate.toISOString() finalTransaction.memo = userTransaction.memo finalTransaction.totalBalance = roundFloorFrom4(Number(userTransaction.balance)) const previousTransaction = i > 0 ? userTransactions[i - 1] : null @@ -183,7 +183,7 @@ export class TransactionResolver { finalTransaction.balance = roundFloorFrom4(Number(userTransaction.amount)) // Todo unsafe conversion const otherUser = userIndiced.find((u) => u.id === userTransaction.linkedUserId) - switch (userTransaction.transactionTypeId) { + switch (userTransaction.typeId) { case TransactionTypeId.CREATION: finalTransaction.name = 'Gradido Akademie' finalTransaction.type = TransactionType.CREATION @@ -300,14 +300,11 @@ export class TransactionResolver { const receivedCallDate = new Date() // transaction const transactionSend = new dbTransaction() - transactionSend.transactionTypeId = TransactionTypeId.SEND + transactionSend.typeId = TransactionTypeId.SEND transactionSend.memo = memo transactionSend.userId = senderUser.id - transactionSend.pubkey = senderUser.pubKey transactionSend.linkedUserId = recipientUser.id transactionSend.amount = BigInt(centAmount) - transactionSend.received = receivedCallDate - transactionSend.transactionId = randomInt(99999) const sendBalance = await calculateNewBalance(senderUser.id, receivedCallDate, -centAmount) transactionSend.balance = BigInt(Math.trunc(sendBalance)) transactionSend.balanceDate = receivedCallDate @@ -315,14 +312,11 @@ export class TransactionResolver { await queryRunner.manager.insert(dbTransaction, transactionSend) const transactionReceive = new dbTransaction() - transactionReceive.transactionTypeId = TransactionTypeId.RECEIVE + transactionReceive.typeId = TransactionTypeId.RECEIVE transactionReceive.memo = memo transactionReceive.userId = recipientUser.id - transactionReceive.pubkey = recipientUser.pubKey transactionReceive.linkedUserId = senderUser.id transactionReceive.amount = BigInt(centAmount) - transactionReceive.received = receivedCallDate - transactionReceive.transactionId = randomInt(99999) const receiveBalance = await calculateNewBalance( recipientUser.id, receivedCallDate, @@ -331,8 +325,13 @@ export class TransactionResolver { transactionReceive.balance = BigInt(Math.trunc(receiveBalance)) transactionReceive.balanceDate = receivedCallDate transactionReceive.sendSenderFinalBalance = transactionSend.balance + transactionReceive.linkedTransactionId = transactionSend.id await queryRunner.manager.insert(dbTransaction, transactionReceive) + // Save linked transaction id for send + transactionSend.linkedTransactionId = transactionReceive.id + await queryRunner.manager.update(dbTransaction, { id: transactionSend.id }, transactionSend) + // Update Balance: sender - amount const senderStateBalance = await updateStateBalance( senderUser,