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
|
* Datatypes
|
||||||
*/
|
*/
|
||||||
@ -46,15 +47,22 @@ export default class CourseRepository {
|
|||||||
* @returns List of courses
|
* @returns List of courses
|
||||||
*/
|
*/
|
||||||
public async getAll(params?: FetchCoursesValidator['schema']['props']): Promise<Course[]> {
|
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()
|
const query = this.Course.query();
|
||||||
.preload('teacher')
|
|
||||||
|
query.where('status', status);
|
||||||
|
|
||||||
|
if (category_id) {
|
||||||
|
query.andWhereHas('category', q => q.where('id', category_id));
|
||||||
|
}
|
||||||
|
|
||||||
|
const courses = await query
|
||||||
.preload('category')
|
.preload('category')
|
||||||
.preload('lessons')
|
|
||||||
.preload('students')
|
|
||||||
.preload('image')
|
.preload('image')
|
||||||
.where('status', status);
|
.withCount('students')
|
||||||
|
.withCount('likes')
|
||||||
|
.withCount('lessons');
|
||||||
|
|
||||||
return courses;
|
return courses;
|
||||||
}
|
}
|
||||||
@ -183,7 +191,7 @@ export default class CourseRepository {
|
|||||||
bg_image_id: data.bg_image_id,
|
bg_image_id: data.bg_image_id,
|
||||||
title: data.title,
|
title: data.title,
|
||||||
description: data.description,
|
description: data.description,
|
||||||
status: CourseStatusEnum.DRAFT, // make course DRAFT before adding lessons
|
status: data.status,
|
||||||
teacher_id: data.teacher_id,
|
teacher_id: data.teacher_id,
|
||||||
category_id: data.category_id,
|
category_id: data.category_id,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
import { schema, rules } from '@ioc:Adonis/Core/Validator';
|
import { schema, rules } from '@ioc:Adonis/Core/Validator';
|
||||||
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
|
import { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
|
||||||
|
import CourseStatusEnum from 'App/Datatypes/Enums/CourseStatusEnum';
|
||||||
|
|
||||||
export default class CreateCourseValidator {
|
export default class CreateCourseValidator {
|
||||||
constructor(protected ctx: HttpContextContract) {}
|
constructor(protected ctx: HttpContextContract) {}
|
||||||
@ -10,6 +11,7 @@ export default class CreateCourseValidator {
|
|||||||
bg_image_id: schema.number.optional([rules.exists({ table: 'images', column: 'id' })]),
|
bg_image_id: schema.number.optional([rules.exists({ table: 'images', column: 'id' })]),
|
||||||
teacher_id: schema.string({}, [rules.exists({ table: 'users', column: 'id' })]),
|
teacher_id: schema.string({}, [rules.exists({ table: 'users', column: 'id' })]),
|
||||||
category_id: schema.string({}, [rules.exists({ table: 'categories', column: 'id' })]),
|
category_id: schema.string({}, [rules.exists({ table: 'categories', column: 'id' })]),
|
||||||
|
status: schema.enum(Object.values(CourseStatusEnum)),
|
||||||
});
|
});
|
||||||
|
|
||||||
public messages = {};
|
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 { HttpContextContract } from '@ioc:Adonis/Core/HttpContext';
|
||||||
import CourseStatusEnum from 'App/Datatypes/Enums/CourseStatusEnum';
|
import CourseStatusEnum from 'App/Datatypes/Enums/CourseStatusEnum';
|
||||||
|
|
||||||
@ -7,6 +7,7 @@ export default class FetchCoursesValidator {
|
|||||||
|
|
||||||
public schema = schema.create({
|
public schema = schema.create({
|
||||||
status: schema.enum.optional(Object.values(CourseStatusEnum)),
|
status: schema.enum.optional(Object.values(CourseStatusEnum)),
|
||||||
|
category_id: schema.string.optional({}, [rules.exists({ table: 'categories', column: 'id' })]),
|
||||||
});
|
});
|
||||||
|
|
||||||
public messages = {};
|
public messages = {};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user