removed duplicate calculation, removed unnecessary checks therefore

This commit is contained in:
Ulf Gebhardt 2022-02-24 13:32:30 +01:00
parent c5486156cc
commit f6f8572a82
Signed by: ulfgebhardt
GPG Key ID: DA6B843E748679C9

View File

@ -35,26 +35,25 @@ import { RIGHTS } from '../../auth/RIGHTS'
// helper helper function // helper helper function
async function updateStateBalance( async function updateStateBalance(
user: dbUser, user: dbUser,
centAmount: number, balance: number,
received: Date, received: Date,
queryRunner: QueryRunner, queryRunner: QueryRunner,
): Promise<dbBalance> { ): Promise<dbBalance> {
let balance = await dbBalance.findOne({ userId: user.id }) let userBalance = await dbBalance.findOne({ userId: user.id })
if (!balance) { if (!userBalance) {
balance = new dbBalance() userBalance = new dbBalance()
balance.userId = user.id userBalance.userId = user.id
balance.amount = centAmount userBalance.amount = balance
balance.modified = received userBalance.modified = received
} else { } else {
const decayedBalance = calculateDecay(balance.amount, balance.recordDate, received).balance userBalance.amount = balance
balance.amount = decayedBalance + centAmount userBalance.modified = new Date()
balance.modified = new Date()
} }
if (balance.amount <= 0) { if (userBalance.amount <= 0) {
throw new Error('error new balance <= 0') throw new Error('error new balance <= 0')
} }
balance.recordDate = received userBalance.recordDate = received
return queryRunner.manager.save(balance).catch((error) => { return queryRunner.manager.save(userBalance).catch((error) => {
throw new Error('error saving balance:' + error) throw new Error('error saving balance:' + error)
}) })
} }
@ -329,32 +328,11 @@ export class TransactionResolver {
transactionSend.linkedTransactionId = transactionReceive.id transactionSend.linkedTransactionId = transactionReceive.id
await queryRunner.manager.update(dbTransaction, { id: transactionSend.id }, transactionSend) await queryRunner.manager.update(dbTransaction, { id: transactionSend.id }, transactionSend)
// Update Balance: sender - amount // Update Balance sender
const senderStateBalance = await updateStateBalance( await updateStateBalance(senderUser, sendBalance, receivedCallDate, queryRunner)
senderUser,
-centAmount,
receivedCallDate,
queryRunner,
)
// Update Balance: recipient + amount // Update Balance recipient
const recipientStateBalance = await updateStateBalance( await updateStateBalance(recipientUser, receiveBalance, receivedCallDate, queryRunner)
recipientUser,
centAmount,
receivedCallDate,
queryRunner,
)
if (senderStateBalance.amount !== sendBalance) {
// eslint-disable-next-line no-console
console.log('db data corrupted, sender', senderStateBalance.amount, sendBalance)
throw new Error('db data corrupted, sender')
}
if (recipientStateBalance.amount !== receiveBalance) {
// eslint-disable-next-line no-console
console.log('db data corrupted, sender', recipientStateBalance.amount, receiveBalance)
throw new Error('db data corrupted, recipient')
}
await queryRunner.commitTransaction() await queryRunner.commitTransaction()
} catch (e) { } catch (e) {