From 244da618926377f58bb12dbbd89b7bb39d84596e Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Tue, 18 Apr 2023 18:43:13 +0200 Subject: [PATCH] users pagination ref #205 --- src/controllers/UserController.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/controllers/UserController.ts b/src/controllers/UserController.ts index cdc1fc9..2d1b796 100644 --- a/src/controllers/UserController.ts +++ b/src/controllers/UserController.ts @@ -1,7 +1,7 @@ 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 { PasswordMustContainLowercaseLetterError, PasswordMustContainNumberError, PasswordMustContainUppercaseLetterError, PasswordTooShortError, UserDeletionNotConfirmedError, UserIdsNotMatchingError, UsernameContainsIllegalCharacterError, UserNotFoundError } from '../errors/UserErrors'; +import { Repository, getConnectionManager } from 'typeorm'; +import { PasswordMustContainLowercaseLetterError, PasswordMustContainNumberError, PasswordMustContainUppercaseLetterError, PasswordTooShortError, UserDeletionNotConfirmedError, UserIdsNotMatchingError, UserNotFoundError, UsernameContainsIllegalCharacterError } from '../errors/UserErrors'; import { UserGroupNotFoundError } from '../errors/UserGroupErrors'; import { CreateUser } from '../models/actions/create/CreateUser'; import { UpdateUser } from '../models/actions/update/UpdateUser'; @@ -28,9 +28,17 @@ export class UserController { @Authorized("USER:GET") @ResponseSchema(ResponseUser, { isArray: true }) @OpenAPI({ description: 'Lists all users.
This includes their groups and permissions granted to them.' }) - async getAll() { + async getAll(@QueryParam("page", { required: false }) page: number, @QueryParam("page_size", { required: false }) page_size: number = 100) { let responseUsers: ResponseUser[] = new Array(); - const users = await this.userRepository.find({ relations: ['permissions', 'groups', 'groups.permissions'] }); + let users: Array; + + if (page) { + users = await this.userRepository.find({ relations: ['permissions', 'groups', 'groups.permissions'], skip: page * page_size, take: page_size }); + } + else { + users = await this.userRepository.find({ relations: ['permissions', 'groups', 'groups.permissions'] }); + } + users.forEach(user => { responseUsers.push(new ResponseUser(user)); });