diff --git a/app/Controllers/Http/ProjectsController.ts b/app/Controllers/Http/ProjectsController.ts index 6a03320..f7fbc60 100755 --- a/app/Controllers/Http/ProjectsController.ts +++ b/app/Controllers/Http/ProjectsController.ts @@ -3,6 +3,7 @@ import Project from "App/Models/Project"; import ProjectStoreValidator from "App/Validators/project/ProjectStoreValidator"; import ProjectUpdateValidator from "App/Validators/project/ProjectUpdateValidator"; import File from "App/Models/File"; +import getTranslation from "App/Tasks/getTranslation"; export default class ProjectsController { @@ -11,6 +12,7 @@ export default class ProjectsController { projects: await Project.query() .orderBy('id', 'asc') .preload('cover') + .preload('description') .preload('tags') }) } @@ -21,6 +23,7 @@ export default class ProjectsController { const cover = await File.findByOrFail('label', data.cover) await project.related('cover').associate(cover) + await project.related('description').associate(await getTranslation(data.description)) await project.related('tags').sync(data.tags!) return response.status(200).send({ project @@ -30,6 +33,7 @@ export default class ProjectsController { public async show ({ params, response }: HttpContextContract) { const project = await Project.findOrFail(params.id) await project.load('cover') + await project.load('description') await project.load('tags') return response.status(200).send({ project @@ -43,6 +47,9 @@ export default class ProjectsController { await project.merge(data).save() if (cover) await project.related('cover').associate(cover) + + if (data.description) await project.related('description').associate(await getTranslation(data.description)) + await project.related('tags').sync(data.tags!) return response.status(200).send({ project diff --git a/app/Models/Project.ts b/app/Models/Project.ts index cc0fc47..cd182e0 100755 --- a/app/Models/Project.ts +++ b/app/Models/Project.ts @@ -2,6 +2,7 @@ import {DateTime} from 'luxon' import {BaseModel, BelongsTo, belongsTo, column, ManyToMany, manyToMany} from '@ioc:Adonis/Lucid/Orm' import File from "App/Models/File"; import Tag from "App/Models/Tag"; +import Translation from "App/Models/Translation"; export default class Project extends BaseModel { @column({ isPrimary: true }) @@ -10,8 +11,13 @@ export default class Project extends BaseModel { @column() public name: string + @belongsTo(() => Translation, { + foreignKey: 'descriptionId' + }) + public description: BelongsTo + @column() - public description: string + public descriptionId: number @column() public progress: number diff --git a/database/migrations/1608415261417_projects.ts b/database/migrations/1608415261417_projects.ts index ec8e071..a2f9c68 100644 --- a/database/migrations/1608415261417_projects.ts +++ b/database/migrations/1608415261417_projects.ts @@ -7,7 +7,11 @@ export default class Projects extends BaseSchema { this.schema.createTable(this.tableName, (table) => { table.increments('id').primary() table.string('name').notNullable() - table.string('description').notNullable() + table + .integer('description_id') + .unsigned() + .references('translations.id') + .onDelete('CASCADE') table.string('url').notNullable() table.integer('progress').notNullable() table