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",
"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",

View File

@ -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;
}

View File

@ -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' })]),
});

View File

@ -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();

View File

@ -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);
}
}