diff --git a/app/Repositories/CourseRepository.ts b/app/Repositories/CourseRepository.ts index 6ac9cea..138d1cf 100644 --- a/app/Repositories/CourseRepository.ts +++ b/app/Repositories/CourseRepository.ts @@ -49,7 +49,7 @@ export default class CourseRepository { * @returns List of courses */ public async getAll(params?: FetchCoursesValidator['schema']['props']): Promise { - const { status, category_id } = params || {}; + const { status, category_id, limit } = params || {}; const query = this.Course.query(); @@ -61,12 +61,17 @@ export default class CourseRepository { query.andWhere('status', status); } + if (limit) { + query.limit(limit); + } + const courses = await query .preload('color') .preload('category') .withCount('students') .withCount('likes') - .withCount('lessons'); + .withCount('lessons') + .orderBy('created_at', 'desc'); return courses; } diff --git a/app/Validators/Course/FetchCoursesValidator.ts b/app/Validators/Course/FetchCoursesValidator.ts index aa12618..3b02f36 100644 --- a/app/Validators/Course/FetchCoursesValidator.ts +++ b/app/Validators/Course/FetchCoursesValidator.ts @@ -8,6 +8,7 @@ export default class FetchCoursesValidator { public schema = schema.create({ status: schema.enum.optional(Object.values(CourseStatusEnum)), category_id: schema.string.optional({}, [rules.exists({ table: 'categories', column: 'id' })]), + limit: schema.number.optional(), }); public messages = {};