mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
fixed backend for new migration
properly write linked Transactions when sendCoin
This commit is contained in:
parent
0c5466f650
commit
3a35cbfee5
@ -4,7 +4,7 @@ import dotenv from 'dotenv'
|
|||||||
dotenv.config()
|
dotenv.config()
|
||||||
|
|
||||||
const constants = {
|
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
|
DECAY_START_TIME: new Date('2021-05-13 17:46:31'), // GMT+0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -318,13 +318,11 @@ export class AdminResolver {
|
|||||||
newBalance = Number(newBalance) + Number(parseInt(pendingCreation.amount.toString()))
|
newBalance = Number(newBalance) + Number(parseInt(pendingCreation.amount.toString()))
|
||||||
|
|
||||||
let transaction = new Transaction()
|
let transaction = new Transaction()
|
||||||
transaction.transactionTypeId = TransactionTypeId.CREATION
|
transaction.typeId = TransactionTypeId.CREATION
|
||||||
transaction.memo = pendingCreation.memo
|
transaction.memo = pendingCreation.memo
|
||||||
transaction.received = receivedCallDate
|
|
||||||
transaction.userId = pendingCreation.userId
|
transaction.userId = pendingCreation.userId
|
||||||
transaction.amount = BigInt(parseInt(pendingCreation.amount.toString()))
|
transaction.amount = BigInt(parseInt(pendingCreation.amount.toString()))
|
||||||
transaction.creationDate = pendingCreation.date
|
transaction.creationDate = pendingCreation.date
|
||||||
transaction.transactionId = randomInt(99999)
|
|
||||||
transaction.balance = BigInt(newBalance)
|
transaction.balance = BigInt(newBalance)
|
||||||
transaction.balanceDate = receivedCallDate
|
transaction.balanceDate = receivedCallDate
|
||||||
transaction = await transaction.save()
|
transaction = await transaction.save()
|
||||||
|
|||||||
@ -135,8 +135,8 @@ export class TransactionResolver {
|
|||||||
userTransactions.forEach((transaction: dbTransaction) => {
|
userTransactions.forEach((transaction: dbTransaction) => {
|
||||||
involvedUserIds.push(transaction.userId)
|
involvedUserIds.push(transaction.userId)
|
||||||
if (
|
if (
|
||||||
transaction.transactionTypeId === TransactionTypeId.SEND ||
|
transaction.typeId === TransactionTypeId.SEND ||
|
||||||
transaction.transactionTypeId === TransactionTypeId.RECEIVE
|
transaction.typeId === TransactionTypeId.RECEIVE
|
||||||
) {
|
) {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||||
involvedUserIds.push(transaction.linkedUserId!) // TODO ensure not null properly
|
involvedUserIds.push(transaction.linkedUserId!) // TODO ensure not null properly
|
||||||
@ -152,7 +152,7 @@ export class TransactionResolver {
|
|||||||
const userTransaction = userTransactions[i]
|
const userTransaction = userTransactions[i]
|
||||||
const finalTransaction = new Transaction()
|
const finalTransaction = new Transaction()
|
||||||
finalTransaction.transactionId = userTransaction.id
|
finalTransaction.transactionId = userTransaction.id
|
||||||
finalTransaction.date = userTransaction.received.toISOString()
|
finalTransaction.date = userTransaction.balanceDate.toISOString()
|
||||||
finalTransaction.memo = userTransaction.memo
|
finalTransaction.memo = userTransaction.memo
|
||||||
finalTransaction.totalBalance = roundFloorFrom4(Number(userTransaction.balance))
|
finalTransaction.totalBalance = roundFloorFrom4(Number(userTransaction.balance))
|
||||||
const previousTransaction = i > 0 ? userTransactions[i - 1] : null
|
const previousTransaction = i > 0 ? userTransactions[i - 1] : null
|
||||||
@ -183,7 +183,7 @@ export class TransactionResolver {
|
|||||||
finalTransaction.balance = roundFloorFrom4(Number(userTransaction.amount)) // Todo unsafe conversion
|
finalTransaction.balance = roundFloorFrom4(Number(userTransaction.amount)) // Todo unsafe conversion
|
||||||
|
|
||||||
const otherUser = userIndiced.find((u) => u.id === userTransaction.linkedUserId)
|
const otherUser = userIndiced.find((u) => u.id === userTransaction.linkedUserId)
|
||||||
switch (userTransaction.transactionTypeId) {
|
switch (userTransaction.typeId) {
|
||||||
case TransactionTypeId.CREATION:
|
case TransactionTypeId.CREATION:
|
||||||
finalTransaction.name = 'Gradido Akademie'
|
finalTransaction.name = 'Gradido Akademie'
|
||||||
finalTransaction.type = TransactionType.CREATION
|
finalTransaction.type = TransactionType.CREATION
|
||||||
@ -300,14 +300,11 @@ export class TransactionResolver {
|
|||||||
const receivedCallDate = new Date()
|
const receivedCallDate = new Date()
|
||||||
// transaction
|
// transaction
|
||||||
const transactionSend = new dbTransaction()
|
const transactionSend = new dbTransaction()
|
||||||
transactionSend.transactionTypeId = TransactionTypeId.SEND
|
transactionSend.typeId = TransactionTypeId.SEND
|
||||||
transactionSend.memo = memo
|
transactionSend.memo = memo
|
||||||
transactionSend.userId = senderUser.id
|
transactionSend.userId = senderUser.id
|
||||||
transactionSend.pubkey = senderUser.pubKey
|
|
||||||
transactionSend.linkedUserId = recipientUser.id
|
transactionSend.linkedUserId = recipientUser.id
|
||||||
transactionSend.amount = BigInt(centAmount)
|
transactionSend.amount = BigInt(centAmount)
|
||||||
transactionSend.received = receivedCallDate
|
|
||||||
transactionSend.transactionId = randomInt(99999)
|
|
||||||
const sendBalance = await calculateNewBalance(senderUser.id, receivedCallDate, -centAmount)
|
const sendBalance = await calculateNewBalance(senderUser.id, receivedCallDate, -centAmount)
|
||||||
transactionSend.balance = BigInt(Math.trunc(sendBalance))
|
transactionSend.balance = BigInt(Math.trunc(sendBalance))
|
||||||
transactionSend.balanceDate = receivedCallDate
|
transactionSend.balanceDate = receivedCallDate
|
||||||
@ -315,14 +312,11 @@ export class TransactionResolver {
|
|||||||
await queryRunner.manager.insert(dbTransaction, transactionSend)
|
await queryRunner.manager.insert(dbTransaction, transactionSend)
|
||||||
|
|
||||||
const transactionReceive = new dbTransaction()
|
const transactionReceive = new dbTransaction()
|
||||||
transactionReceive.transactionTypeId = TransactionTypeId.RECEIVE
|
transactionReceive.typeId = TransactionTypeId.RECEIVE
|
||||||
transactionReceive.memo = memo
|
transactionReceive.memo = memo
|
||||||
transactionReceive.userId = recipientUser.id
|
transactionReceive.userId = recipientUser.id
|
||||||
transactionReceive.pubkey = recipientUser.pubKey
|
|
||||||
transactionReceive.linkedUserId = senderUser.id
|
transactionReceive.linkedUserId = senderUser.id
|
||||||
transactionReceive.amount = BigInt(centAmount)
|
transactionReceive.amount = BigInt(centAmount)
|
||||||
transactionReceive.received = receivedCallDate
|
|
||||||
transactionReceive.transactionId = randomInt(99999)
|
|
||||||
const receiveBalance = await calculateNewBalance(
|
const receiveBalance = await calculateNewBalance(
|
||||||
recipientUser.id,
|
recipientUser.id,
|
||||||
receivedCallDate,
|
receivedCallDate,
|
||||||
@ -331,8 +325,13 @@ export class TransactionResolver {
|
|||||||
transactionReceive.balance = BigInt(Math.trunc(receiveBalance))
|
transactionReceive.balance = BigInt(Math.trunc(receiveBalance))
|
||||||
transactionReceive.balanceDate = receivedCallDate
|
transactionReceive.balanceDate = receivedCallDate
|
||||||
transactionReceive.sendSenderFinalBalance = transactionSend.balance
|
transactionReceive.sendSenderFinalBalance = transactionSend.balance
|
||||||
|
transactionReceive.linkedTransactionId = transactionSend.id
|
||||||
await queryRunner.manager.insert(dbTransaction, transactionReceive)
|
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
|
// Update Balance: sender - amount
|
||||||
const senderStateBalance = await updateStateBalance(
|
const senderStateBalance = await updateStateBalance(
|
||||||
senderUser,
|
senderUser,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user