fix: load category and teacher data after upd course

This commit is contained in:
Sergey Yarkov 2021-11-13 23:03:03 +03:00
parent 077f1f91a6
commit 71a99fe556
5 changed files with 25 additions and 23 deletions

View File

@ -24,12 +24,7 @@
"Database": "database", "Database": "database",
"Contracts": "contracts" "Contracts": "contracts"
}, },
"preloads": [ "preloads": ["./routes/index", "./start/kernel", "./start/event", "./start/bouncer"],
"./routes/index",
"./start/kernel",
"./start/event",
"./start/bouncer"
],
"providers": [ "providers": [
"./providers/AppProvider", "./providers/AppProvider",
"./providers/CloudinaryProvider", "./providers/CloudinaryProvider",
@ -42,9 +37,7 @@
"@adonisjs/attachment-lite", "@adonisjs/attachment-lite",
"@adonisjs/bouncer" "@adonisjs/bouncer"
], ],
"aceProviders": [ "aceProviders": ["@adonisjs/repl"],
"@adonisjs/repl"
],
"metaFiles": [ "metaFiles": [
{ {
"pattern": "resources/views/**/*.edge", "pattern": "resources/views/**/*.edge",

View File

@ -79,7 +79,6 @@ export default class CourseRepository {
.preload('lessons') .preload('lessons')
.preload('students') .preload('students')
.where('id', id) .where('id', id)
.where('status', CourseStatusEnum.PUBLISHED)
.first(); .first();
return course; return course;
@ -241,7 +240,12 @@ export default class CourseRepository {
.first(); .first();
if (course) { if (course) {
await course.merge(data).save(); course.merge(data);
course.load('category');
course.load('teacher');
await course.save();
return course; return course;
} }

View File

@ -7,6 +7,7 @@ export default class UpdateCourseValidator {
public schema = schema.create({ public schema = schema.create({
title: schema.string.optional(), title: schema.string.optional(),
description: 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' })]), category_id: schema.string.optional({}, [rules.exists({ table: 'categories', column: 'id' })]),
}); });

View File

@ -16,11 +16,11 @@ import LessonContent from 'App/Models/LessonContent';
import Role from 'App/Models/Role'; import Role from 'App/Models/Role';
import User from 'App/Models/User'; import User from 'App/Models/User';
const makeFakeUser = (faker: Faker.FakerStatic) => { const makeFakeUser = (faker: Faker.FakerStatic, loginPrefix?: string) => {
return { return {
first_name: faker.name.firstName(), first_name: faker.name.firstName(),
last_name: faker.name.lastName(), 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(), email: faker.internet.exampleEmail(),
password: '123456', password: '123456',
}; };
@ -36,14 +36,19 @@ export const UserFactory = Factory.define(User, ({ faker }) => makeFakeUser(fake
.relation('contacts', () => ContactFactory) .relation('contacts', () => ContactFactory)
.build(); .build();
export const TeacherFactory = Factory.define(User, ({ faker }) => makeFakeUser(faker)) export const TeacherFactory = Factory.define(User, ({ faker }) => makeFakeUser(faker, 'teacher'))
.relation('contacts', () => ContactFactory) .relation('contacts', () => ContactFactory)
.after('create', async (_, user: User) => { .after('create', async (_, user: User) => {
/**
* Get teacher role to attach after create new user
*/
const role = await Role.findByOrFail('slug', 'teacher'); 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(); .build();

View File

@ -2,7 +2,7 @@
import BaseSeeder from '@ioc:Adonis/Lucid/Seeder'; import BaseSeeder from '@ioc:Adonis/Lucid/Seeder';
import Role from 'App/Models/Role'; import Role from 'App/Models/Role';
import User from 'App/Models/User'; import User from 'App/Models/User';
import { UserFactory } from 'Database/factories'; import { StudentFactory } from 'Database/factories';
export default class UserSeeder extends BaseSeeder { export default class UserSeeder extends BaseSeeder {
public async run() { public async run() {
@ -22,14 +22,13 @@ export default class UserSeeder extends BaseSeeder {
last_name: 'Doe', last_name: 'Doe',
login: 'admin', login: 'admin',
password: '123456', password: '123456',
email: 'example.email@mail.com', email: 'administrator@example.com',
}); });
await userAdmin.related('roles').attach([roles.admin.id]); await userAdmin.related('roles').attach([roles.admin.id]);
/** /**
* Student * Students
*/ */
const userStudent = await UserFactory.with('contacts').create(); await StudentFactory.with('contacts').createMany(20);
await userStudent.related('roles').attach([roles.student.id]);
} }
} }