From a418e74db597af797c575056ee6f0d40c6a38d5e Mon Sep 17 00:00:00 2001 From: Ilham Dwi Pratama S Date: Wed, 8 Dec 2021 10:46:39 +0700 Subject: [PATCH] add: paging in user and relation when get in user --- src/users/entities/user.entity.ts | 23 ++++++++++++++++++++++- src/users/users.controller.ts | 5 +++-- src/users/users.service.ts | 17 ++++++++++++++--- 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/src/users/entities/user.entity.ts b/src/users/entities/user.entity.ts index 723e4a9..17cea15 100644 --- a/src/users/entities/user.entity.ts +++ b/src/users/entities/user.entity.ts @@ -1,7 +1,8 @@ +import { Roles } from 'src/configurable/entities/roles.entity'; import { Entity, Column, - PrimaryGeneratedColumn, BeforeInsert, + PrimaryGeneratedColumn, BeforeInsert, ManyToOne, } from 'typeorm'; import { BaseModel } from '../../config/basemodel.entity'; import { hashPassword } from '../../helper/hash_password'; @@ -22,4 +23,24 @@ export class User extends BaseModel { @Column({ default: true }) isActive: boolean; + + @ManyToOne( + () => { + return User; + }, + (user) => { + return user.id; + }, + ) + superior: User; + + @ManyToOne( + () => { + return Roles; + }, + (roles) => { + return roles.id; + }, + ) + roles: Roles; } diff --git a/src/users/users.controller.ts b/src/users/users.controller.ts index 7e45858..f7a7c76 100644 --- a/src/users/users.controller.ts +++ b/src/users/users.controller.ts @@ -8,6 +8,7 @@ import { Delete, ParseUUIDPipe, HttpStatus, + Query, } from '@nestjs/common'; import { UsersService } from './users.service'; import { CreateUserDto } from './dto/create-user.dto'; @@ -30,8 +31,8 @@ export class UsersController { } @Get() - async findAll() { - const [data, count] = await this.usersService.findAll(); + async findAll(@Query('page') page: number) { + const [data, count] = await this.usersService.findAll(page); return { data, diff --git a/src/users/users.service.ts b/src/users/users.service.ts index 44242d3..5c01f87 100644 --- a/src/users/users.service.ts +++ b/src/users/users.service.ts @@ -28,14 +28,25 @@ export class UsersService { return this.usersRepository.findOneOrFail(result.identifiers[0].id); } - findAll() { - return this.usersRepository.findAndCount(); + findAll(page:number) { + return this.usersRepository.findAndCount({ + skip: page * 10, + take: 10, + order: { + version: 'DESC', + }, + }); } async findOne(id: string) { const coa = await this.coaService.findByUser(id,coaType.WALLET); try { - const userData = await this.usersRepository.findOneOrFail(id); + const userData = await this.usersRepository.findOneOrFail({ + where: { + id: id + }, + relations:["roles","superior"] + }); return { ...userData, wallet:coa.amount,