diff --git a/.adonisrc.json b/.adonisrc.json index 837ffa2..a960fa8 100644 --- a/.adonisrc.json +++ b/.adonisrc.json @@ -24,12 +24,7 @@ "Database": "database", "Contracts": "contracts" }, - "preloads": [ - "./routes/index", - "./start/kernel", - "./start/event", - "./start/bouncer" - ], + "preloads": ["./routes/index", "./start/kernel", "./start/event", "./start/bouncer"], "providers": [ "./providers/AppProvider", "./providers/CloudinaryProvider", @@ -42,9 +37,7 @@ "@adonisjs/attachment-lite", "@adonisjs/bouncer" ], - "aceProviders": [ - "@adonisjs/repl" - ], + "aceProviders": ["@adonisjs/repl"], "metaFiles": [ { "pattern": "resources/views/**/*.edge", diff --git a/app/Repositories/CourseRepository.ts b/app/Repositories/CourseRepository.ts index 1057b33..654b06f 100644 --- a/app/Repositories/CourseRepository.ts +++ b/app/Repositories/CourseRepository.ts @@ -79,7 +79,6 @@ export default class CourseRepository { .preload('lessons') .preload('students') .where('id', id) - .where('status', CourseStatusEnum.PUBLISHED) .first(); return course; @@ -241,7 +240,12 @@ export default class CourseRepository { .first(); if (course) { - await course.merge(data).save(); + course.merge(data); + course.load('category'); + course.load('teacher'); + + await course.save(); + return course; } diff --git a/app/Validators/Course/UpdateCourseValidator.ts b/app/Validators/Course/UpdateCourseValidator.ts index 3eb8b07..61cbe97 100644 --- a/app/Validators/Course/UpdateCourseValidator.ts +++ b/app/Validators/Course/UpdateCourseValidator.ts @@ -7,6 +7,7 @@ export default class UpdateCourseValidator { public schema = schema.create({ title: schema.string.optional(), description: schema.string.optional(), + teacher_id: schema.string.optional({}, [rules.exists({ table: 'users', column: 'id' })]), category_id: schema.string.optional({}, [rules.exists({ table: 'categories', column: 'id' })]), }); diff --git a/database/factories/index.ts b/database/factories/index.ts index e3577b8..4cf77fc 100644 --- a/database/factories/index.ts +++ b/database/factories/index.ts @@ -16,11 +16,11 @@ import LessonContent from 'App/Models/LessonContent'; import Role from 'App/Models/Role'; import User from 'App/Models/User'; -const makeFakeUser = (faker: Faker.FakerStatic) => { +const makeFakeUser = (faker: Faker.FakerStatic, loginPrefix?: string) => { return { first_name: faker.name.firstName(), last_name: faker.name.lastName(), - login: `${faker.lorem.word(12)}${faker.datatype.number(100)}`, + login: `${loginPrefix || 'user'}${faker.datatype.number(1000)}`, email: faker.internet.exampleEmail(), password: '123456', }; @@ -36,14 +36,19 @@ export const UserFactory = Factory.define(User, ({ faker }) => makeFakeUser(fake .relation('contacts', () => ContactFactory) .build(); -export const TeacherFactory = Factory.define(User, ({ faker }) => makeFakeUser(faker)) +export const TeacherFactory = Factory.define(User, ({ faker }) => makeFakeUser(faker, 'teacher')) .relation('contacts', () => ContactFactory) .after('create', async (_, user: User) => { - /** - * Get teacher role to attach after create new user - */ const role = await Role.findByOrFail('slug', 'teacher'); - user.related('roles').attach([role.id]); + await user.related('roles').attach([role.id]); + }) + .build(); + +export const StudentFactory = Factory.define(User, ({ faker }) => makeFakeUser(faker, 'student')) + .relation('contacts', () => ContactFactory) + .after('create', async (_, user: User) => { + const role = await Role.findByOrFail('slug', 'student'); + await user.related('roles').attach([role.id]); }) .build(); diff --git a/database/seeders/User.ts b/database/seeders/User.ts index 478c001..07d19d2 100644 --- a/database/seeders/User.ts +++ b/database/seeders/User.ts @@ -2,7 +2,7 @@ import BaseSeeder from '@ioc:Adonis/Lucid/Seeder'; import Role from 'App/Models/Role'; import User from 'App/Models/User'; -import { UserFactory } from 'Database/factories'; +import { StudentFactory } from 'Database/factories'; export default class UserSeeder extends BaseSeeder { public async run() { @@ -22,14 +22,13 @@ export default class UserSeeder extends BaseSeeder { last_name: 'Doe', login: 'admin', password: '123456', - email: 'example.email@mail.com', + email: 'administrator@example.com', }); await userAdmin.related('roles').attach([roles.admin.id]); /** - * Student + * Students */ - const userStudent = await UserFactory.with('contacts').create(); - await userStudent.related('roles').attach([roles.student.id]); + await StudentFactory.with('contacts').createMany(20); } }