mirror of
https://github.com/IT4Change/gradido.git
synced 2025-12-13 07:45:54 +00:00
Refactor the near functions to a single one.
This commit is contained in:
parent
84c724daea
commit
a61e66ffc4
@ -55,6 +55,7 @@ import { TRANSACTIONS_LOCK } from '@/util/TRANSACTIONS_LOCK'
|
|||||||
import LogError from '@/server/LogError'
|
import LogError from '@/server/LogError'
|
||||||
|
|
||||||
import { getLastTransaction } from './util/getLastTransaction'
|
import { getLastTransaction } from './util/getLastTransaction'
|
||||||
|
import { findContributions } from './util/findContributions'
|
||||||
|
|
||||||
@Resolver()
|
@Resolver()
|
||||||
export class ContributionResolver {
|
export class ContributionResolver {
|
||||||
@ -167,25 +168,14 @@ export class ContributionResolver {
|
|||||||
@Arg('statusFilter', () => [ContributionStatus], { nullable: true })
|
@Arg('statusFilter', () => [ContributionStatus], { nullable: true })
|
||||||
statusFilter?: ContributionStatus[],
|
statusFilter?: ContributionStatus[],
|
||||||
): Promise<ContributionListResult> {
|
): Promise<ContributionListResult> {
|
||||||
const where: {
|
const [dbContributions, count] = await findContributions(
|
||||||
contributionStatus?: FindOperator<string> | null
|
order,
|
||||||
} = {}
|
currentPage,
|
||||||
|
pageSize,
|
||||||
|
false,
|
||||||
|
statusFilter,
|
||||||
|
)
|
||||||
|
|
||||||
if (statusFilter && statusFilter.length) {
|
|
||||||
where.contributionStatus = In(statusFilter)
|
|
||||||
}
|
|
||||||
|
|
||||||
const [dbContributions, count] = await getConnection()
|
|
||||||
.createQueryBuilder()
|
|
||||||
.select('c')
|
|
||||||
.from(DbContribution, 'c')
|
|
||||||
.innerJoinAndSelect('c.user', 'u')
|
|
||||||
.leftJoinAndSelect('c.messages', 'm')
|
|
||||||
.where(where)
|
|
||||||
.orderBy('c.createdAt', order)
|
|
||||||
.limit(pageSize)
|
|
||||||
.offset((currentPage - 1) * pageSize)
|
|
||||||
.getManyAndCount()
|
|
||||||
return new ContributionListResult(
|
return new ContributionListResult(
|
||||||
count,
|
count,
|
||||||
dbContributions.map((contribution) => new Contribution(contribution, contribution.user)),
|
dbContributions.map((contribution) => new Contribution(contribution, contribution.user)),
|
||||||
@ -431,18 +421,13 @@ export class ContributionResolver {
|
|||||||
@Arg('statusFilter', () => [ContributionStatus], { nullable: true })
|
@Arg('statusFilter', () => [ContributionStatus], { nullable: true })
|
||||||
statusFilter?: ContributionStatus[],
|
statusFilter?: ContributionStatus[],
|
||||||
): Promise<ContributionListResult> {
|
): Promise<ContributionListResult> {
|
||||||
const [dbContributions, count] = await DbContribution.findAndCount({
|
const [dbContributions, count] = await findContributions(
|
||||||
where: {
|
order,
|
||||||
...(statusFilter && statusFilter.length && { contributionStatus: In(statusFilter) }),
|
currentPage,
|
||||||
},
|
pageSize,
|
||||||
withDeleted: true,
|
true,
|
||||||
order: {
|
statusFilter,
|
||||||
createdAt: order,
|
)
|
||||||
},
|
|
||||||
relations: ['user'],
|
|
||||||
skip: (currentPage - 1) * pageSize,
|
|
||||||
take: pageSize,
|
|
||||||
})
|
|
||||||
|
|
||||||
return new ContributionListResult(
|
return new ContributionListResult(
|
||||||
count,
|
count,
|
||||||
|
|||||||
24
backend/src/graphql/resolver/util/findContributions.ts
Normal file
24
backend/src/graphql/resolver/util/findContributions.ts
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
import { ContributionStatus } from '@enum/ContributionStatus'
|
||||||
|
import { Order } from '@enum/Order'
|
||||||
|
import { Contribution as DbContribution } from '@entity/Contribution'
|
||||||
|
import { In } from '@dbTools/typeorm'
|
||||||
|
|
||||||
|
export const findContributions = async (
|
||||||
|
order: Order,
|
||||||
|
currentPage: number,
|
||||||
|
pageSize: number,
|
||||||
|
withDeleted: boolean,
|
||||||
|
statusFilter?: ContributionStatus[],
|
||||||
|
): Promise<[DbContribution[], number]> =>
|
||||||
|
DbContribution.findAndCount({
|
||||||
|
where: {
|
||||||
|
...(statusFilter && statusFilter.length && { contributionStatus: In(statusFilter) }),
|
||||||
|
},
|
||||||
|
withDeleted: withDeleted,
|
||||||
|
order: {
|
||||||
|
createdAt: order,
|
||||||
|
},
|
||||||
|
relations: ['user'],
|
||||||
|
skip: (currentPage - 1) * pageSize,
|
||||||
|
take: pageSize,
|
||||||
|
})
|
||||||
Loading…
x
Reference in New Issue
Block a user