From 513d7f6fbaebe39beab6ec95e6e42eb10c62296d Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 18 Apr 2023 18:44:15 +0200 Subject: [PATCH] usergroup pagination ref #205 --- src/controllers/UserGroupController.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/controllers/UserGroupController.ts b/src/controllers/UserGroupController.ts index 71d0b3a..be948ac 100644 --- a/src/controllers/UserGroupController.ts +++ b/src/controllers/UserGroupController.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 { getConnectionManager, Repository } from 'typeorm'; +import { Repository, getConnectionManager } from 'typeorm'; import { UserGroupIdsNotMatchingError, UserGroupNotFoundError } from '../errors/UserGroupErrors'; import { CreateUserGroup } from '../models/actions/create/CreateUserGroup'; import { UpdateUserGroup } from '../models/actions/update/UpdateUserGroup'; @@ -27,9 +27,16 @@ export class UserGroupController { @Authorized("USERGROUP:GET") @ResponseSchema(ResponseUserGroup, { isArray: true }) @OpenAPI({ description: 'Lists all groups.
The information provided might change while the project continues to evolve.' }) - async getAll() { + async getAll(@QueryParam("page", { required: false }) page: number, @QueryParam("page_size", { required: false }) page_size: number = 100) { let responseGroups: ResponseUserGroup[] = new Array(); - const groups = await this.userGroupsRepository.find({ relations: ['permissions'] }); + let groups: Array; + + if (page) { + groups = await this.userGroupsRepository.find({ relations: ['permissions'], skip: page * page_size, take: page_size }); + } else { + groups = await this.userGroupsRepository.find({ relations: ['permissions'] }); + } + groups.forEach(group => { responseGroups.push(group.toResponse()); });