diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 4d546ddc0..0d867ba55 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -16,7 +16,6 @@ import { TransactionTypeId } from '@enum/TransactionTypeId' import { Transaction } from '@model/Transaction' import { TransactionList } from '@model/TransactionList' import { User } from '@model/User' -import { TransactionRepository } from '@repository/Transaction' import { TransactionLinkRepository } from '@repository/TransactionLink' import { RIGHTS } from '@/auth/RIGHTS' @@ -37,6 +36,7 @@ import { BalanceResolver } from './BalanceResolver' import { MEMO_MAX_CHARS, MEMO_MIN_CHARS } from './const/const' import { findUserByIdentifier } from './util/findUserByIdentifier' import { getLastTransaction } from './util/getLastTransaction' +import { getTransactionList } from './util/getTransactionList' export const executeTransaction = async ( amount: Decimal, @@ -209,8 +209,7 @@ export class TransactionResolver { // find transactions // first page can contain 26 due to virtual decay transaction const offset = (currentPage - 1) * pageSize - const transactionRepository = getCustomRepository(TransactionRepository) - const [userTransactions, userTransactionsCount] = await transactionRepository.findByUserPaged( + const [userTransactions, userTransactionsCount] = await getTransactionList( user.id, pageSize, offset, @@ -283,7 +282,7 @@ export class TransactionResolver { } // transactions - userTransactions.forEach((userTransaction) => { + userTransactions.forEach((userTransaction: dbTransaction) => { const linkedUser = userTransaction.typeId === TransactionTypeId.CREATION ? communityUser diff --git a/backend/src/graphql/resolver/util/getTransactionList.ts b/backend/src/graphql/resolver/util/getTransactionList.ts new file mode 100644 index 000000000..654f4e002 --- /dev/null +++ b/backend/src/graphql/resolver/util/getTransactionList.ts @@ -0,0 +1,20 @@ +import { Transaction as DbTransaction } from '@entity/Transaction' + +import { Order } from '@enum/Order' + +export const getTransactionList = async ( + userId: number, + limit: number, + offset: number, + order: Order, +): Promise<[DbTransaction[], number]> => { + return DbTransaction.findAndCount({ + where: { + userId, + }, + order: { balanceDate: order, id: order }, + relations: ['previousTransaction'], + skip: offset, + take: limit, + }) +} diff --git a/backend/src/typeorm/repository/Transaction.ts b/backend/src/typeorm/repository/Transaction.ts deleted file mode 100644 index 0fb9f7ffe..000000000 --- a/backend/src/typeorm/repository/Transaction.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { EntityRepository, Repository } from '@dbTools/typeorm' -import { Transaction } from '@entity/Transaction' - -import { Order } from '@enum/Order' - -@EntityRepository(Transaction) -export class TransactionRepository extends Repository { - findByUserPaged( - userId: number, - limit: number, - offset: number, - order: Order, - ): Promise<[Transaction[], number]> { - const query = this.createQueryBuilder('userTransaction') - .leftJoinAndSelect( - 'userTransaction.previousTransaction', - 'transaction', - 'userTransaction.previous = transaction.id', - ) - .where('userTransaction.userId = :userId', { userId }) - - return query - .orderBy('userTransaction.balanceDate', order) - .limit(limit) - .offset(offset) - .getManyAndCount() - } -}