From 9eaca99e3b7b34e8e12f464298d75c7ecc0daa32 Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Thu, 9 Dec 2021 23:51:19 +0300 Subject: [PATCH] feat: return paginated users base on parameters --- app/Repositories/UserRepository.ts | 19 ++++++++++++++++--- app/Services/UserService.ts | 20 ++++++++++++++------ 2 files changed, 30 insertions(+), 9 deletions(-) diff --git a/app/Repositories/UserRepository.ts b/app/Repositories/UserRepository.ts index 2ff2e3f..650790e 100644 --- a/app/Repositories/UserRepository.ts +++ b/app/Repositories/UserRepository.ts @@ -64,7 +64,7 @@ export default class UserRepository { */ public async getAll(params?: any) { // eslint-disable-next-line @typescript-eslint/naming-convention - const { search, email, login, first_name, last_name, role, page = 1, limit = 10 }: any = params || {}; + const { search, email, login, first_name, last_name, role, page, limit }: any = params || {}; const query = this.User.query(); @@ -97,8 +97,21 @@ export default class UserRepository { query.whereHas('roles', q => q.where('slug', role)); } - const data = await query.preload('contacts').preload('roles').orderBy('created_at', 'desc').paginate(page, limit); - return data.toJSON(); + query.preload('contacts').preload('roles').orderBy('created_at', 'desc'); + + /** + * Return paginated users if provided params + */ + if (limit && page) { + const data = await query.paginate(page, limit); + return data.toJSON(); + } + + /** + * Return all users + */ + const data = await query; + return data; } /** diff --git a/app/Services/UserService.ts b/app/Services/UserService.ts index 97b11b6..df95a08 100644 --- a/app/Services/UserService.ts +++ b/app/Services/UserService.ts @@ -76,16 +76,24 @@ export default class UserService { */ public async fetchUsers(params?: any): Promise { const users = await this.userRepository.getAll(params); - - return { + const result: IResponse = { success: true, status: HttpStatusEnum.OK, message: 'Fetched all users.', - data: users.data, - meta: { - pagination: users.meta, - }, + data: {}, }; + + if (users instanceof Array) { + result.data = users; + return result; + } + + result.data = users.data; + result.meta = { + pagination: users.meta, + }; + + return result; } /**