diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 2afabd6a7..3f9e4e258 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -30,8 +30,7 @@ import { calculateBalance, isHexPublicKey } from '@/util/validate' import { RIGHTS } from '@/auth/RIGHTS' import { User } from '@model/User' import { communityUser } from '@/util/communityUser' -import { virtualLinkTransaction } from '@/util/virtualLinkTransaction' -import { virtualDecayTransaction } from '@/util/virtualDecayTransaction' +import { virtualLinkTransaction, virtualDecayTransaction } from '@/util/virtualTransactions' import Decimal from 'decimal.js-light' import { calculateDecay } from '@/util/decay' diff --git a/backend/src/util/virtualDecayTransaction.ts b/backend/src/util/virtualDecayTransaction.ts deleted file mode 100644 index ff51ea4f5..000000000 --- a/backend/src/util/virtualDecayTransaction.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import Decimal from 'decimal.js-light' -import { SaveOptions, RemoveOptions } from '@dbTools/typeorm' -import { Transaction as dbTransaction } from '@entity/Transaction' -import { calculateDecay } from './decay' -import { TransactionTypeId } from '@enum/TransactionTypeId' -import { Transaction } from '@model/Transaction' -import { User } from '@model/User' - -const virtualDecayTransaction = ( - balance: Decimal, - balanceDate: Date, - time: Date = new Date(), - user: User, -): Transaction => { - const decay = calculateDecay(balance, balanceDate, time) - // const balance = decay.balance.minus(lastTransaction.balance) - const decayDbTransaction: dbTransaction = { - id: -1, - userId: -1, - previous: -1, - typeId: TransactionTypeId.DECAY, - amount: decay.decay ? decay.decay : new Decimal(0), // new Decimal(0), // this kinda is wrong, but helps with the frontend query - balance: decay.balance, - balanceDate: time, - decay: decay.decay ? decay.decay : new Decimal(0), - decayStart: decay.start, - memo: '', - creationDate: null, - hasId: function (): boolean { - throw new Error('Function not implemented.') - }, - save: function (options?: SaveOptions): Promise { - throw new Error('Function not implemented.') - }, - remove: function (options?: RemoveOptions): Promise { - throw new Error('Function not implemented.') - }, - softRemove: function (options?: SaveOptions): Promise { - throw new Error('Function not implemented.') - }, - recover: function (options?: SaveOptions): Promise { - throw new Error('Function not implemented.') - }, - reload: function (): Promise { - throw new Error('Function not implemented.') - }, - } - return new Transaction(decayDbTransaction, user) -} - -export { virtualDecayTransaction } diff --git a/backend/src/util/virtualLinkTransaction.ts b/backend/src/util/virtualLinkTransaction.ts deleted file mode 100644 index 648825261..000000000 --- a/backend/src/util/virtualLinkTransaction.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* eslint-disable @typescript-eslint/no-unused-vars */ -import { Transaction } from '@model/Transaction' -import { SaveOptions, RemoveOptions } from '@dbTools/typeorm' -import { Transaction as dbTransaction } from '@entity/Transaction' -import { TransactionTypeId } from '@enum/TransactionTypeId' -import { User } from '@model/User' -import Decimal from 'decimal.js-light' - -const virtualLinkTransaction = ( - balance: Decimal, - amount: Decimal, - holdAvailableAmount: Decimal, - decay: Decimal, - createdAt: Date, - validUntil: Date, - user: User, -): Transaction => { - const linkDbTransaction: dbTransaction = { - id: -2, - userId: -1, - previous: -1, - typeId: TransactionTypeId.TRANSACTION_LINK, - amount: amount, - balance: balance, - balanceDate: validUntil, - decayStart: createdAt, - decay: decay, - memo: '', - creationDate: null, - hasId: function (): boolean { - throw new Error('Function not implemented.') - }, - save: function (options?: SaveOptions): Promise { - throw new Error('Function not implemented.') - }, - remove: function (options?: RemoveOptions): Promise { - throw new Error('Function not implemented.') - }, - softRemove: function (options?: SaveOptions): Promise { - throw new Error('Function not implemented.') - }, - recover: function (options?: SaveOptions): Promise { - throw new Error('Function not implemented.') - }, - reload: function (): Promise { - throw new Error('Function not implemented.') - }, - } - return new Transaction(linkDbTransaction, user) -} - -export { virtualLinkTransaction } diff --git a/backend/src/util/virtualTransactions.ts b/backend/src/util/virtualTransactions.ts new file mode 100644 index 000000000..72c21b9e4 --- /dev/null +++ b/backend/src/util/virtualTransactions.ts @@ -0,0 +1,82 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +import { Transaction } from '@model/Transaction' +import { SaveOptions, RemoveOptions } from '@dbTools/typeorm' +import { Transaction as dbTransaction } from '@entity/Transaction' +import { TransactionTypeId } from '@enum/TransactionTypeId' +import { calculateDecay } from './decay' +import { User } from '@model/User' +import Decimal from 'decimal.js-light' + +const defaultModelFunctions = { + hasId: function (): boolean { + throw new Error('Function not implemented.') + }, + save: function (options?: SaveOptions): Promise { + throw new Error('Function not implemented.') + }, + remove: function (options?: RemoveOptions): Promise { + throw new Error('Function not implemented.') + }, + softRemove: function (options?: SaveOptions): Promise { + throw new Error('Function not implemented.') + }, + recover: function (options?: SaveOptions): Promise { + throw new Error('Function not implemented.') + }, + reload: function (): Promise { + throw new Error('Function not implemented.') + }, +} + +const virtualLinkTransaction = ( + balance: Decimal, + amount: Decimal, + holdAvailableAmount: Decimal, + decay: Decimal, + createdAt: Date, + validUntil: Date, + user: User, +): Transaction => { + const linkDbTransaction: dbTransaction = { + id: -2, + userId: -1, + previous: -1, + typeId: TransactionTypeId.TRANSACTION_LINK, + amount: amount, + balance: balance, + balanceDate: validUntil, + decayStart: createdAt, + decay: decay, + memo: '', + creationDate: null, + ...defaultModelFunctions, + } + return new Transaction(linkDbTransaction, user) +} + +const virtualDecayTransaction = ( + balance: Decimal, + balanceDate: Date, + time: Date = new Date(), + user: User, +): Transaction => { + const decay = calculateDecay(balance, balanceDate, time) + // const balance = decay.balance.minus(lastTransaction.balance) + const decayDbTransaction: dbTransaction = { + id: -1, + userId: -1, + previous: -1, + typeId: TransactionTypeId.DECAY, + amount: decay.decay ? decay.decay : new Decimal(0), // new Decimal(0), // this kinda is wrong, but helps with the frontend query + balance: decay.balance, + balanceDate: time, + decay: decay.decay ? decay.decay : new Decimal(0), + decayStart: decay.start, + memo: '', + creationDate: null, + ...defaultModelFunctions, + } + return new Transaction(decayDbTransaction, user) +} + +export { virtualLinkTransaction, virtualDecayTransaction }