From b604be584780e774789e3a52dd333cb0c6011e4f Mon Sep 17 00:00:00 2001 From: Moriz Wahl Date: Tue, 7 Mar 2023 17:16:53 +0100 Subject: [PATCH] object as arg for find contributions --- .../graphql/resolver/ContributionResolver.ts | 27 +++++++++---------- .../resolver/util/findContributions.ts | 27 ++++++++++++------- 2 files changed, 30 insertions(+), 24 deletions(-) diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index ab177d759..5946b0237 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -135,15 +135,15 @@ export class ContributionResolver { ): Promise { const user = getUser(context) - const [dbContributions, count] = await findContributions( + const [dbContributions, count] = await findContributions({ order, currentPage, pageSize, - true, - ['messages'], - user.id, + withDeleted: true, + relations: ['messages'], + userId: user.id, statusFilter, - ) + }) return new ContributionListResult( count, dbContributions.map((contribution) => new Contribution(contribution, user)), @@ -158,15 +158,13 @@ export class ContributionResolver { @Arg('statusFilter', () => [ContributionStatus], { nullable: true }) statusFilter?: ContributionStatus[], ): Promise { - const [dbContributions, count] = await findContributions( + const [dbContributions, count] = await findContributions({ order, currentPage, pageSize, - false, - ['user'], - undefined, + relations: ['user'], statusFilter, - ) + }) return new ContributionListResult( count, @@ -386,15 +384,14 @@ export class ContributionResolver { @Arg('statusFilter', () => [ContributionStatus], { nullable: true }) statusFilter?: ContributionStatus[], ): Promise { - const [dbContributions, count] = await findContributions( + const [dbContributions, count] = await findContributions({ order, currentPage, pageSize, - true, - ['user'], - undefined, + withDeleted: true, + relations: ['user'], statusFilter, - ) + }) return new ContributionListResult( count, diff --git a/backend/src/graphql/resolver/util/findContributions.ts b/backend/src/graphql/resolver/util/findContributions.ts index 5201284aa..48f08f041 100644 --- a/backend/src/graphql/resolver/util/findContributions.ts +++ b/backend/src/graphql/resolver/util/findContributions.ts @@ -3,16 +3,24 @@ import { Order } from '@enum/Order' import { Contribution as DbContribution } from '@entity/Contribution' import { In } from '@dbTools/typeorm' +interface FindContributionsOptions { + order: Order + currentPage: number + pageSize: number + withDeleted?: boolean + relations?: string[] + userId?: number + statusFilter?: ContributionStatus[] +} + export const findContributions = async ( - order: Order, - currentPage: number, - pageSize: number, - withDeleted: boolean, - relations: string[], - userId?: number, - statusFilter?: ContributionStatus[], -): Promise<[DbContribution[], number]> => - DbContribution.findAndCount({ + options: FindContributionsOptions, +): Promise<[DbContribution[], number]> => { + const { order, currentPage, pageSize, withDeleted, relations, userId, statusFilter } = { + withDeleted: false, + ...options, + } + return DbContribution.findAndCount({ where: { ...(statusFilter && statusFilter.length && { contributionStatus: In(statusFilter) }), ...(userId && { userId }), @@ -26,3 +34,4 @@ export const findContributions = async ( skip: (currentPage - 1) * pageSize, take: pageSize, }) +}