add user query on find contributions

This commit is contained in:
Moriz Wahl 2023-06-22 15:23:33 +02:00
parent 5963ebb6a1
commit 49c8599097

View File

@ -1,4 +1,4 @@
import { In } from '@dbTools/typeorm'
import { In, Like } from '@dbTools/typeorm'
import { Contribution as DbContribution } from '@entity/Contribution'
import { ContributionStatus } from '@enum/ContributionStatus'
@ -12,21 +12,31 @@ interface FindContributionsOptions {
relations?: string[]
userId?: number | null
statusFilter?: ContributionStatus[] | null
query?: string | null
}
export const findContributions = async (
options: FindContributionsOptions,
): Promise<[DbContribution[], number]> => {
const { order, currentPage, pageSize, withDeleted, relations, userId, statusFilter } = {
const { order, currentPage, pageSize, withDeleted, relations, userId, statusFilter, query } = {
withDeleted: false,
relations: [],
...options,
}
const requiredWhere = {
...(statusFilter?.length && { contributionStatus: In(statusFilter) }),
...(userId && { userId }),
}
const where = query
? [
{ ...requiredWhere, name: Like(`%${query}%`) },
{ ...requiredWhere, lastName: Like(`%${query}%`) },
{ ...requiredWhere, email: Like(`%${query}%`) },
]
: requiredWhere
return DbContribution.findAndCount({
where: {
...(statusFilter?.length && { contributionStatus: In(statusFilter) }),
...(userId && { userId }),
},
where,
withDeleted,
order: {
createdAt: order,