diff --git a/backend/src/graphql/resolvers/TransactionResolver.ts b/backend/src/graphql/resolvers/TransactionResolver.ts index 3762cccee..cd07a94f5 100644 --- a/backend/src/graphql/resolvers/TransactionResolver.ts +++ b/backend/src/graphql/resolvers/TransactionResolver.ts @@ -2,12 +2,13 @@ /* eslint-disable @typescript-eslint/explicit-module-boundary-types */ import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql' +import { getCustomRepository } from 'typeorm' import CONFIG from '../../config' import { TransactionList } from '../models/Transaction' import { TransactionListInput, TransactionSendArgs } from '../inputs/TransactionInput' import { apiGet, apiPost } from '../../apis/HttpRequest' -import { User as dbUser } from '../../typeorm/entity/User' -import { Balance as dbBalance } from '../../typeorm/entity/Balance' +import { BalanceRepository } from '../../typeorm/repository/Balance' +import { UserRepository } from '../../typeorm/repository/User' import listTransactions from './listTransactions' import { roundFloorFrom4 } from '../../util/round' import { calculateDecay } from '../../util/decay' @@ -25,7 +26,8 @@ export class TransactionResolver { if (!result.success) throw new Error(result.data) // load user - const userEntity = await dbUser.findByPubkeyHex(result.data.user.public_hex) + const userRepository = getCustomRepository(UserRepository) + const userEntity = await userRepository.findByPubkeyHex(result.data.user.public_hex) const transactions = await listTransactions(firstPage, items, order, userEntity) @@ -37,7 +39,8 @@ export class TransactionResolver { transactions.gdtSum = resultGDTSum.data.sum // get balance - const balanceEntity = await dbBalance.findByUser(userEntity.id) + const balanceRepository = getCustomRepository(BalanceRepository) + const balanceEntity = await balanceRepository.findByUser(userEntity.id) if (balanceEntity) { const now = new Date() transactions.balance = roundFloorFrom4(balanceEntity.amount) diff --git a/backend/src/typeorm/entity/Transaction.ts b/backend/src/typeorm/entity/Transaction.ts index d8b87828c..53dce4d08 100644 --- a/backend/src/typeorm/entity/Transaction.ts +++ b/backend/src/typeorm/entity/Transaction.ts @@ -27,19 +27,4 @@ export class Transaction extends BaseEntity { @OneToOne(() => TransactionCreation, (transactionCreation) => transactionCreation.transaction) transactionCreation: TransactionCreation - - static async findByTransactionTypeId(transactionTypeId: number): Promise { - return this.createQueryBuilder('transaction') - .where('transaction.transactionTypeId = :transactionTypeId', { - transactionTypeId: transactionTypeId, - }) - .getMany() - } - - static async getDecayStartBlock(): Promise { - return this.createQueryBuilder('transaction') - .where('transaction.transactionTypeId = :transactionTypeId', { transactionTypeId: 9 }) - .orderBy('received', 'ASC') - .getOne() - } } diff --git a/backend/src/typeorm/repository/Transaction.ts b/backend/src/typeorm/repository/Transaction.ts new file mode 100644 index 000000000..2c26fe7b5 --- /dev/null +++ b/backend/src/typeorm/repository/Transaction.ts @@ -0,0 +1,28 @@ +import { EntityRepository, Repository } from 'typeorm' +import { Transaction } from '../entity/Transaction' + +@EntityRepository(Transaction) +export class TransactionRepository extends Repository { + async findDecayStartBlock(): Promise { + return this.createQueryBuilder('transaction') + .where('transaction.transactionTypeId = :transactionTypeId', { transactionTypeId: 9 }) + .orderBy('received', 'ASC') + .getOne() + } + + async joinFullTransactionsByIds(transactionIds: number[]): Promise { + return this.createQueryBuilder('transaction') + .where('transaction.id IN (:...transactions)', { transactions: transactionIds }) + .leftJoinAndSelect( + 'transaction.transactionSendCoin', + 'transactionSendCoin', + // 'transactionSendCoin.transaction_id = transaction.id', + ) + .leftJoinAndSelect( + 'transaction.transactionCreation', + 'transactionCreation', + // 'transactionSendCoin.transaction_id = transaction.id', + ) + .getMany() + } +}