From 1e9e24d99d75ce6dc846ff662e62c886646ea974 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 18 Apr 2023 18:34:08 +0200 Subject: [PATCH] Pagination for group contacts ref #205 --- src/controllers/GroupContactController.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/controllers/GroupContactController.ts b/src/controllers/GroupContactController.ts index f6f6364..81e45c8 100644 --- a/src/controllers/GroupContactController.ts +++ b/src/controllers/GroupContactController.ts @@ -1,6 +1,6 @@ import { Authorized, Body, Delete, Get, JsonController, OnUndefined, Param, Post, Put, QueryParam } from 'routing-controllers'; import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; -import { getConnection, getConnectionManager, Repository } from 'typeorm'; +import { Repository, getConnection, getConnectionManager } from 'typeorm'; import { GroupContactIdsNotMatchingError, GroupContactNotFoundError } from '../errors/GroupContactErrors'; import { RunnerGroupNotFoundError } from '../errors/RunnerGroupErrors'; import { CreateGroupContact } from '../models/actions/create/CreateGroupContact'; @@ -26,9 +26,16 @@ export class GroupContactController { @Authorized("CONTACT:GET") @ResponseSchema(ResponseGroupContact, { isArray: true }) @OpenAPI({ description: 'Lists all contacts.
This includes the contact\'s associated groups.' }) - async getAll() { + async getAll(@QueryParam("page", { required: false }) page: number, @QueryParam("page_size", { required: false }) page_size: number = 100) { let responseContacts: ResponseGroupContact[] = new Array(); - const contacts = await this.contactRepository.find({ relations: ['groups', 'groups.parentGroup'] }); + let contacts: Array; + + if (page) { + contacts = await this.contactRepository.find({ relations: ['groups', 'groups.parentGroup'], skip: page * page_size, take: page_size }); + } else { + contacts = await this.contactRepository.find({ relations: ['groups', 'groups.parentGroup'] }); + } + contacts.forEach(contact => { responseContacts.push(contact.toResponse()); });