From 3879bedf5389bde24fb33e1caba2c23d5479316a Mon Sep 17 00:00:00 2001 From: Andres Date: Mon, 17 Jul 2023 10:50:44 +0200 Subject: [PATCH] fix pagination and /users --- .../common/pagination/pagination.service.ts | 14 +++++++++++--- src/modules/users/api/users.controller.ts | 9 +++++++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/infrastructure/common/pagination/pagination.service.ts b/src/infrastructure/common/pagination/pagination.service.ts index 65a61dd..8110ac7 100644 --- a/src/infrastructure/common/pagination/pagination.service.ts +++ b/src/infrastructure/common/pagination/pagination.service.ts @@ -1,9 +1,14 @@ import { isObject } from 'remeda' import { DEFAULT_PAGE_NUMBER, DEFAULT_PAGE_SIZE } from './pagination.constants' - +interface PaginationQuery { + currentPage?: string + itemsPerPage?: string +} export class Pagination { - static getPaginationData(query: T) { + static getPaginationData>( + query: T + ): { currentPage: number; itemsPerPage: number } & Omit { if (!isObject(query)) throw new Error('Pagination.getPaginationData: query is not an object') const currentPage = @@ -12,6 +17,7 @@ export class Pagination { !isNaN(Number(query.currentPage)) ? +query.currentPage : DEFAULT_PAGE_NUMBER + const itemsPerPage = 'itemsPerPage' in query && typeof query.itemsPerPage === 'string' && @@ -19,7 +25,9 @@ export class Pagination { ? +query.itemsPerPage : DEFAULT_PAGE_SIZE - return { currentPage, itemsPerPage, ...query } + const { currentPage: _, itemsPerPage: __, ...rest } = query + + return { currentPage, itemsPerPage, ...rest } } static transformPaginationData( diff --git a/src/modules/users/api/users.controller.ts b/src/modules/users/api/users.controller.ts index 113800d..e32f0a9 100644 --- a/src/modules/users/api/users.controller.ts +++ b/src/modules/users/api/users.controller.ts @@ -25,9 +25,14 @@ export class UsersController { @Get() async findAll(@Query() query) { - const { page, pageSize } = Pagination.getPaginationData(query) + const { currentPage, itemsPerPage } = Pagination.getPaginationData(query) - const users = await this.usersService.getUsers(page, pageSize, query.name, query.email) + const users = await this.usersService.getUsers( + currentPage, + itemsPerPage, + query.name, + query.email + ) if (!users) throw new NotFoundException('Users not found')