From a5cda86610fd99fa7ddacd95df327e868e6fc680 Mon Sep 17 00:00:00 2001 From: einhornimmond Date: Fri, 16 May 2025 07:54:20 +0200 Subject: [PATCH] move into contributions --- .../graphql/resolver/ContributionResolver.ts | 9 ++-- .../graphql/resolver/util/contributions.ts | 49 +++++++++++++++++-- .../resolver/util/loadContributions.ts | 47 ------------------ 3 files changed, 50 insertions(+), 55 deletions(-) delete mode 100644 backend/src/graphql/resolver/util/loadContributions.ts diff --git a/backend/src/graphql/resolver/ContributionResolver.ts b/backend/src/graphql/resolver/ContributionResolver.ts index 49077bdbd..0a0e40f51 100644 --- a/backend/src/graphql/resolver/ContributionResolver.ts +++ b/backend/src/graphql/resolver/ContributionResolver.ts @@ -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 { - 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]) diff --git a/backend/src/graphql/resolver/util/contributions.ts b/backend/src/graphql/resolver/util/contributions.ts index bd4169b44..826da1ab6 100644 --- a/backend/src/graphql/resolver/util/contributions.ts +++ b/backend/src/graphql/resolver/util/contributions.ts @@ -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 => { - return Contribution.findOne({ where: { id } }) + +function buildBaseOptions(paginated: Paginated): FindManyOptions { + 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), + }) } diff --git a/backend/src/graphql/resolver/util/loadContributions.ts b/backend/src/graphql/resolver/util/loadContributions.ts deleted file mode 100644 index 17ba3d17f..000000000 --- a/backend/src/graphql/resolver/util/loadContributions.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { Paginated } from '@arg/Paginated' -import { Contribution as DbContribution } from 'database' -import { FindManyOptions } from 'typeorm' - -function buildBaseOptions(paginated: Paginated): FindManyOptions { - 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), - }) -}