diff --git a/backend/src/graphql/models/Decay.ts b/backend/src/graphql/models/Decay.ts index 09564c5ca..9bc89f6ec 100644 --- a/backend/src/graphql/models/Decay.ts +++ b/backend/src/graphql/models/Decay.ts @@ -5,8 +5,7 @@ import { Transaction } from '../../typeorm/entity/Transaction' @ObjectType() export class Decay { - constructor() - constructor(json?: any) { + constructor(json: any) { if (json) { this.balance = Number(json.balance) this.decayStart = json.decay_start diff --git a/backend/src/graphql/models/Transaction.ts b/backend/src/graphql/models/Transaction.ts index 01dcf280d..c34cac1c5 100644 --- a/backend/src/graphql/models/Transaction.ts +++ b/backend/src/graphql/models/Transaction.ts @@ -18,7 +18,7 @@ export class Transaction { this.balance = Number(json.balance) this.decayStart = json.decay_start this.decayEnd = json.decay_end - this.decayDuration = parseFloat(json.decay_duration) + this.memo = json.memo this.transactionId = json.transaction_id this.name = json.name diff --git a/backend/src/graphql/resolvers/BalanceResolver.ts b/backend/src/graphql/resolvers/BalanceResolver.ts index 02c148ffb..e7e8d73a3 100644 --- a/backend/src/graphql/resolvers/BalanceResolver.ts +++ b/backend/src/graphql/resolvers/BalanceResolver.ts @@ -7,7 +7,7 @@ import { Balance } from '../models/Balance' import { apiGet } from '../../apis/HttpRequest' import { User as dbUser } from '../../typeorm/entity/User' import { Balance as dbBalance } from '../../typeorm/entity/Balance' -import calculateDecay from '../../util/decay' +import { calculateDecay } from '../../util/decay' import { roundFloorFrom4 } from '../../util/round' @Resolver() diff --git a/backend/src/graphql/resolvers/TransactionResolver.ts b/backend/src/graphql/resolvers/TransactionResolver.ts index 0e4106991..f8cf2db62 100644 --- a/backend/src/graphql/resolvers/TransactionResolver.ts +++ b/backend/src/graphql/resolvers/TransactionResolver.ts @@ -10,7 +10,7 @@ import { User as dbUser } from '../../typeorm/entity/User' import { Balance as dbBalance } from '../../typeorm/entity/Balance' import listTransactions from './listTransactions' import { roundFloorFrom4 } from '../../util/round' -import calculateDecay from '../../util/decay' +import { calculateDecay } from '../../util/decay' @Resolver() export class TransactionResolver { @@ -41,7 +41,7 @@ export class TransactionResolver { const now = new Date() transactions.balance = roundFloorFrom4(balanceEntity.amount) transactions.decay = roundFloorFrom4( - calculateDecay(balanceEntity.amount, balanceEntity.recordDate, now), + await calculateDecay(balanceEntity.amount, balanceEntity.recordDate, now), ) transactions.decayDate = now.toString() diff --git a/backend/src/graphql/resolvers/listTransactions.ts b/backend/src/graphql/resolvers/listTransactions.ts index 9bbb77bb5..73ddea150 100644 --- a/backend/src/graphql/resolvers/listTransactions.ts +++ b/backend/src/graphql/resolvers/listTransactions.ts @@ -12,7 +12,7 @@ async function calculateAndAddDecayTransactions( decay: boolean, skipFirstTransaction: boolean, ): Promise { - const finalTransactions: Transaction[] = [] + let finalTransactions: Transaction[] = [] const transactionIds: number[] = [] const involvedUserIds: number[] = [] @@ -29,14 +29,14 @@ async function calculateAndAddDecayTransactions( .createQueryBuilder('transaction') .where('transaction.id IN (:...transactions)', { transactions: transactionIds }) .leftJoinAndSelect( - 'transaction.sendCoin', - 'transactionSendCoin', - 'transactionSendCoin.transactionid = transaction.id', + 'transaction.transactionSendCoin', + 'transactionSendCoin' + //'transactionSendCoin.transaction_id = transaction.id', ) .leftJoinAndSelect( - 'transaction.creation', - 'transactionCreation', - 'transactionSendCoin.transactionid = transaction.id', + 'transaction.transactionCreation', + 'transactionCreation' + //'transactionSendCoin.transaction_id = transaction.id', ) .getMany() @@ -47,7 +47,7 @@ async function calculateAndAddDecayTransactions( const decayStartTransaction = await Decay.getDecayStartBlock() - userTransactions.forEach(async (userTransaction: dbUserTransaction, i: number) => { + await userTransactions.forEach(async (userTransaction: dbUserTransaction, i: number) => { const transaction = transactionIndiced[userTransaction.transactionId] const finalTransaction = new Transaction() finalTransaction.transactionId = transaction.id @@ -117,6 +117,7 @@ async function calculateAndAddDecayTransactions( if (i > 0 || !skipFirstTransaction) { finalTransactions.push(finalTransaction) } + if (i === userTransactions.length - 1 && decay) { const now = new Date() const decay = await calculateDecayWithInterval( @@ -135,7 +136,6 @@ async function calculateAndAddDecayTransactions( finalTransactions.push(decayTransaction) } } - return finalTransactions }) return finalTransactions @@ -176,7 +176,7 @@ export default async function listTransactions( user, decay, skipFirstTransaction, - ) + ) if (order === 'DESC') { transactions = transactions.reverse() } diff --git a/backend/src/typeorm/entity/TransactionCreation.ts b/backend/src/typeorm/entity/TransactionCreation.ts index e9efa2e23..4a8bdd571 100644 --- a/backend/src/typeorm/entity/TransactionCreation.ts +++ b/backend/src/typeorm/entity/TransactionCreation.ts @@ -27,6 +27,6 @@ export class TransactionCreation extends BaseEntity { targetDate: Timestamp @OneToOne(() => Transaction) - @JoinColumn() + @JoinColumn({ name: 'transaction_id' }) transaction: Transaction } diff --git a/backend/src/typeorm/entity/TransactionSendCoin.ts b/backend/src/typeorm/entity/TransactionSendCoin.ts index 40ceb298b..4054ea755 100644 --- a/backend/src/typeorm/entity/TransactionSendCoin.ts +++ b/backend/src/typeorm/entity/TransactionSendCoin.ts @@ -25,6 +25,6 @@ export class TransactionSendCoin extends BaseEntity { amount: number @OneToOne(() => Transaction) - @JoinColumn() + @JoinColumn({ name: 'transaction_id' }) transaction: Transaction } diff --git a/backend/src/util/decay.ts b/backend/src/util/decay.ts index ccb6beeb4..6b07cb35f 100644 --- a/backend/src/util/decay.ts +++ b/backend/src/util/decay.ts @@ -21,7 +21,7 @@ async function calculateDecayWithInterval( to: number, ): Promise { const decayStartBlock = await Decay.getDecayStartBlock() - const result = new Decay() + const result = new Decay(undefined) result.balance = amount result.decayStart = from result.decayEnd = from