mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 10:19:20 +03:00
feat: added pagination on users list query
This commit is contained in:
parent
bacacad675
commit
417d236cbb
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -3,6 +3,9 @@ export default interface IResponse {
|
||||
status: number;
|
||||
message: string;
|
||||
data: object;
|
||||
meta?: {
|
||||
pagination?: any;
|
||||
};
|
||||
error?: {
|
||||
code: string;
|
||||
};
|
||||
|
||||
@ -63,8 +63,9 @@ export default class UserRepository {
|
||||
* @param params Params to find
|
||||
* @returns Array of users
|
||||
*/
|
||||
public async getAll(params?: any): Promise<User[]> {
|
||||
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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -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,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@ -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 = {};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user