mirror of
https://github.com/sergeyyarkov/educt-server.git
synced 2026-10-11 18:29:15 +03:00
fix: load category and teacher data after upd course
This commit is contained in:
parent
077f1f91a6
commit
71a99fe556
@ -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",
|
||||||
|
|||||||
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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' })]),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -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();
|
||||||
|
|
||||||
|
|||||||
@ -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]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user