mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 18:29:15 +03:00
feat: fetch courses params
This commit is contained in:
parent
c2b43d7ba2
commit
1a86fda94b
@ -1,3 +1,4 @@
|
||||
/* eslint-disable @typescript-eslint/naming-convention */
|
||||
/**
|
||||
* Datatypes
|
||||
*/
|
||||
@ -46,15 +47,22 @@ export default class CourseRepository {
|
||||
* @returns List of courses
|
||||
*/
|
||||
public async getAll(params?: FetchCoursesValidator['schema']['props']): Promise<Course[]> {
|
||||
const { status = CourseStatusEnum.PUBLISHED } = params || {};
|
||||
const { status = CourseStatusEnum.PUBLISHED, category_id } = params || {};
|
||||
|
||||
const courses = await this.Course.query()
|
||||
.preload('teacher')
|
||||
const query = this.Course.query();
|
||||
|
||||
query.where('status', status);
|
||||
|
||||
if (category_id) {
|
||||
query.andWhereHas('category', q => q.where('id', category_id));
|
||||
}
|
||||
|
||||
const courses = await query
|
||||
.preload('category')
|
||||
.preload('lessons')
|
||||
.preload('students')
|
||||
.preload('image')
|
||||
.where('status', status);
|
||||
.withCount('students')
|
||||
.withCount('likes')
|
||||
.withCount('lessons');
|
||||
|
||||
return courses;
|
||||
}
|
||||
@ -183,7 +191,7 @@ export default class CourseRepository {
|
||||
bg_image_id: data.bg_image_id,
|
||||
title: data.title,
|
||||
description: data.description,
|
||||
status: CourseStatusEnum.DRAFT, // make course DRAFT before adding lessons
|
||||
status: data.status,
|
||||
teacher_id: data.teacher_id,
|
||||
category_id: data.category_id,
|
||||
});
|
||||
|
||||
@ -1,5 +1,6 @@
|
||||
import { schema, rules } from '@ioc:Adonis/Core/Validator';
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
|
||||
import CourseStatusEnum from 'App/Datatypes/Enums/CourseStatusEnum';
|
||||
|
||||
export default class CreateCourseValidator {
|
||||
constructor(protected ctx: HttpContextContract) {}
|
||||
@ -10,6 +11,7 @@ export default class CreateCourseValidator {
|
||||
bg_image_id: schema.number.optional([rules.exists({ table: 'images', column: 'id' })]),
|
||||
teacher_id: schema.string({}, [rules.exists({ table: 'users', column: 'id' })]),
|
||||
category_id: schema.string({}, [rules.exists({ table: 'categories', column: 'id' })]),
|
||||
status: schema.enum(Object.values(CourseStatusEnum)),
|
||||
});
|
||||
|
||||
public messages = {};
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { schema } from '@ioc:Adonis/Core/Validator';
|
||||
import { schema, rules } from '@ioc:Adonis/Core/Validator';
|
||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
|
||||
import CourseStatusEnum from 'App/Datatypes/Enums/CourseStatusEnum';
|
||||
|
||||
@ -7,6 +7,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' })]),
|
||||
});
|
||||
|
||||
public messages = {};
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user