object as arg for find contributions

This commit is contained in:
Moriz Wahl 2023-03-07 17:16:53 +01:00
parent 74138dbef3
commit b604be5847
2 changed files with 30 additions and 24 deletions

View File

@ -135,15 +135,15 @@ export class ContributionResolver {
): Promise<ContributionListResult> {
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<ContributionListResult> {
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<ContributionListResult> {
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,

View File

@ -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,
})
}