diff --git a/app/Controllers/Http/Api/v1/UsersController.ts b/app/Controllers/Http/Api/v1/UsersController.ts index 45e862c..b7b5d94 100644 --- a/app/Controllers/Http/Api/v1/UsersController.ts +++ b/app/Controllers/Http/Api/v1/UsersController.ts @@ -37,7 +37,7 @@ export default class UsersController extends BaseController { throw new Exception(result.message, result.status, result.error.code); } - return this.sendResponse(ctx, result.data, result.message, result.status); + return this.sendResponse(ctx, result.data, result.message, result.status, result.meta); } /** diff --git a/app/Controllers/Http/BaseController.ts b/app/Controllers/Http/BaseController.ts index 82cd977..c4ad5d5 100644 --- a/app/Controllers/Http/BaseController.ts +++ b/app/Controllers/Http/BaseController.ts @@ -2,11 +2,12 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; export default class BaseController { - public sendResponse(ctx: HttpContextContract, data: object, message: string, status = 200): void { + public sendResponse(ctx: HttpContextContract, data: object, message: string, status = 200, meta?: any): void { const response = { status, message, data, + meta, }; return ctx.response.status(response.status).send(response); diff --git a/app/Datatypes/Interfaces/IResponse.ts b/app/Datatypes/Interfaces/IResponse.ts index cfa186a..6299338 100644 --- a/app/Datatypes/Interfaces/IResponse.ts +++ b/app/Datatypes/Interfaces/IResponse.ts @@ -3,6 +3,9 @@ export default interface IResponse { status: number; message: string; data: object; + meta?: { + pagination?: any; + }; error?: { code: string; }; diff --git a/app/Repositories/UserRepository.ts b/app/Repositories/UserRepository.ts index 199a97a..8d70a41 100644 --- a/app/Repositories/UserRepository.ts +++ b/app/Repositories/UserRepository.ts @@ -63,8 +63,9 @@ export default class UserRepository { * @param params Params to find * @returns Array of users */ - public async getAll(params?: any): Promise { - const { email, login, first_name, last_name, role }: any = params || {}; + public async getAll(params?: any) { + const { email, login, first_name, last_name, role, page = 1, limit = 10 }: any = params || {}; + const query = this.User.query(); if (email) { @@ -87,8 +88,8 @@ export default class UserRepository { query.preload('roles').whereHas('roles', q => q.where('slug', role)); } - const data = await query.preload('contacts').preload('roles'); - return data; + const data = await query.preload('contacts').preload('roles').orderBy('created_at', 'desc').paginate(page, limit); + return data.toJSON(); } /** diff --git a/app/Services/UserService.ts b/app/Services/UserService.ts index 7308762..70e5816 100644 --- a/app/Services/UserService.ts +++ b/app/Services/UserService.ts @@ -80,7 +80,10 @@ export default class UserService { success: true, status: HttpStatusEnum.OK, message: 'Fetched all users.', - data: users, + data: users.data, + meta: { + pagination: users.meta, + }, }; } diff --git a/app/Validators/Course/SetCourseStatusValidator.ts b/app/Validators/Course/SetCourseStatusValidator.ts index 46c24a6..001c473 100644 --- a/app/Validators/Course/SetCourseStatusValidator.ts +++ b/app/Validators/Course/SetCourseStatusValidator.ts @@ -4,13 +4,13 @@ import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext'; /** * Datatypes */ -import HttpStatusEnum from 'App/Datatypes/Enums/HttpStatusEnum'; +import CourseStatusEnum from 'App/Datatypes/Enums/CourseStatusEnum'; export default class SetCourseStatusValidator { constructor(protected ctx: HttpContextContract) {} public schema = schema.create({ - status: schema.enum(Object.values(HttpStatusEnum)), + status: schema.enum(Object.values(CourseStatusEnum)), }); public messages = {};