diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index 02b8277..cacd18a 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -10,7 +10,8 @@ import { Request, UseGuards, Delete, - ParseIntPipe + ParseIntPipe, + Query } from '@nestjs/common'; import { AuthGuard } from './auth.guard'; import { AuthService } from './auth.service'; @@ -75,4 +76,12 @@ export class AuthController { return this.authService.profile(id_user); } + @Get('page') + findAllPaginated(@Query('page') page: number = 1, @Query('limit') limit: number = 10, @Query() filters: any) { + page = page < 1 ? 1 : page; + limit = limit > 10 || limit < 1 ? 10 : limit; + + return this.authService.findAllPaginated(page, limit); + } + } \ No newline at end of file diff --git a/src/auth/auth.service.ts b/src/auth/auth.service.ts index f3d0e2d..0a2e882 100644 --- a/src/auth/auth.service.ts +++ b/src/auth/auth.service.ts @@ -124,4 +124,21 @@ export class AuthService { return user; } + + async findAllPaginated( + page: number, + limit: number, + ): Promise<{ profesores: User[], total: number, totalPages: number }> { + const query = this.userRepository.createQueryBuilder('profesor') + + const [profesores, total] = await query + .skip((page - 1) * limit) + .take(limit) + .orderBy('profesor.nombre', 'ASC') + .getManyAndCount(); + + const totalPages = Math.ceil(total / limit); + + return { profesores, total, totalPages }; + } }