move into contributions

This commit is contained in:
einhornimmond 2025-05-16 07:54:20 +02:00
parent 4b4bb15912
commit a5cda86610
3 changed files with 50 additions and 55 deletions

View File

@ -63,13 +63,12 @@ import { fullName } from '@/util/utilities'
import { ContributionMessage } from '@model/ContributionMessage'
import { ContributionMessageType } from '../enum/ContributionMessageType'
import { findContribution } from './util/contributions'
import { getOpenCreations, getUserCreation, validateContribution } from './util/creations'
import { extractGraphQLFields, extractGraphQLFieldsForSelect } from './util/extractGraphQLFields'
import { findContributionMessages } from './util/findContributionMessages'
import { findContributions } from './util/findContributions'
import { getLastTransaction } from './util/getLastTransaction'
import { loadAllContributions, loadUserContributions } from './util/loadContributions'
import { loadAllContributions, loadUserContributions } from './util/contributions'
import { sendTransactionsToDltConnector } from './util/sendTransactionsToDltConnector'
@Resolver(() => Contribution)
@ -77,11 +76,11 @@ export class ContributionResolver {
@Authorized([RIGHTS.ADMIN_LIST_CONTRIBUTIONS])
@Query(() => Contribution)
async contribution(@Arg('id', () => Int) id: number): Promise<Contribution> {
const contribution = await findContribution(id)
if (!contribution) {
const dbContribution = await DbContribution.findOne({ where: { id } })
if (!dbContribution) {
throw new LogError('Contribution not found', id)
}
return new Contribution(contribution)
return new Contribution(dbContribution)
}
@Authorized([RIGHTS.CREATE_CONTRIBUTION])

View File

@ -1,5 +1,48 @@
import { Contribution } from 'database'
import { Paginated } from '@arg/Paginated'
import { Contribution as DbContribution } from 'database'
import { FindManyOptions } from 'typeorm'
export const findContribution = async (id: number): Promise<Contribution | null> => {
return Contribution.findOne({ where: { id } })
function buildBaseOptions(paginated: Paginated): FindManyOptions<DbContribution> {
const { currentPage, pageSize } = paginated
return {
skip: (currentPage - 1) * pageSize,
take: pageSize,
}
}
/*
* Load user contributions with messages
* @param userId if userId is set, load all contributions of the user, with messages
* @param paginated pagination, see {@link Paginated}
*/
export const loadUserContributions = async (
userId: number,
paginated: Paginated,
messagePagination?: Paginated,
): Promise<[DbContribution[], number]> => {
const { order } = paginated
const { order: messageOrder } = messagePagination || { order: 'ASC' }
return DbContribution.findAndCount({
where: { userId },
withDeleted: true,
relations: { messages: { user: true } },
order: { createdAt: order, id: order, messages: { createdAt: messageOrder } },
...buildBaseOptions(paginated),
})
}
/*
* Load all contributions
* @param paginated pagination, see {@link Paginated}
*/
export const loadAllContributions = async (
paginated: Paginated,
): Promise<[DbContribution[], number]> => {
const { order } = paginated
return DbContribution.findAndCount({
relations: { user: { emailContact: true } },
order: { createdAt: order, id: order },
...buildBaseOptions(paginated),
})
}

View File

@ -1,47 +0,0 @@
import { Paginated } from '@arg/Paginated'
import { Contribution as DbContribution } from 'database'
import { FindManyOptions } from 'typeorm'
function buildBaseOptions(paginated: Paginated): FindManyOptions<DbContribution> {
const { currentPage, pageSize } = paginated
return {
skip: (currentPage - 1) * pageSize,
take: pageSize,
}
}
/*
* Load user contributions with messages
* @param userId if userId is set, load all contributions of the user, with messages
* @param paginated pagination, see {@link Paginated}
*/
export const loadUserContributions = async (
userId: number,
paginated: Paginated,
messagePagination?: Paginated,
): Promise<[DbContribution[], number]> => {
const { order } = paginated
const { order: messageOrder } = messagePagination || { order: 'ASC' }
return DbContribution.findAndCount({
where: { userId },
withDeleted: true,
relations: { messages: { user: true } },
order: { createdAt: order, id: order, messages: { createdAt: messageOrder } },
...buildBaseOptions(paginated),
})
}
/*
* Load all contributions
* @param paginated pagination, see {@link Paginated}
*/
export const loadAllContributions = async (
paginated: Paginated,
): Promise<[DbContribution[], number]> => {
const { order } = paginated
return DbContribution.findAndCount({
relations: { user: { emailContact: true } },
order: { createdAt: order, id: order },
...buildBaseOptions(paginated),
})
}