diff --git a/backend/src/graphql/resolver/ContributionMessageResolver.ts b/backend/src/graphql/resolver/ContributionMessageResolver.ts index 25f2a2560..69931467b 100644 --- a/backend/src/graphql/resolver/ContributionMessageResolver.ts +++ b/backend/src/graphql/resolver/ContributionMessageResolver.ts @@ -22,6 +22,8 @@ import { import { Context, getUser } from '@/server/context' import { LogError } from '@/server/LogError' +import { findContributionMessages } from './util/findContributionMessages' + @Resolver() export class ContributionMessageResolver { @Authorized([RIGHTS.CREATE_CONTRIBUTION_MESSAGE]) @@ -82,16 +84,12 @@ export class ContributionMessageResolver { @Args() { currentPage = 1, pageSize = 5, order = Order.DESC }: Paginated, ): Promise { - const [contributionMessages, count] = await getConnection() - .createQueryBuilder() - .select('cm') - .from(DbContributionMessage, 'cm') - .leftJoinAndSelect('cm.user', 'u') - .where({ contributionId }) - .orderBy('cm.createdAt', order) - .limit(pageSize) - .offset((currentPage - 1) * pageSize) - .getManyAndCount() + const [contributionMessages, count] = await findContributionMessages({ + contributionId, + currentPage, + pageSize, + order, + }) return { count, diff --git a/backend/src/graphql/resolver/util/findContributionMessages.ts b/backend/src/graphql/resolver/util/findContributionMessages.ts new file mode 100644 index 000000000..90555cca7 --- /dev/null +++ b/backend/src/graphql/resolver/util/findContributionMessages.ts @@ -0,0 +1,27 @@ +import { ContributionMessage as DbContributionMessage } from '@entity/ContributionMessage' + +import { Order } from '@enum/Order' + +interface FindContributionMessagesOptions { + contributionId: number + pageSize: number + currentPage: number + order: Order +} + +export const findContributionMessages = async ( + options: FindContributionMessagesOptions, +): Promise<[DbContributionMessage[], number]> => { + const { contributionId, pageSize, currentPage, order } = options + return DbContributionMessage.findAndCount({ + where: { + contributionId, + }, + relations: ['user'], + order: { + createdAt: order, + }, + skip: (currentPage - 1) * pageSize, + take: pageSize, + }) +}