mirror of
https://github.com/ArthurDanjou/artdanj-api.git
synced 2026-01-14 12:14:33 +01:00
Add tags pivot in projects
This commit is contained in:
@@ -10,7 +10,8 @@ export default class ProjectsController {
|
||||
return response.status(200).send({
|
||||
projects: await Project.query()
|
||||
.orderBy('id', 'asc')
|
||||
.preload('file')
|
||||
.preload('cover')
|
||||
.preload('tags')
|
||||
})
|
||||
}
|
||||
|
||||
@@ -19,7 +20,8 @@ export default class ProjectsController {
|
||||
const project = await Project.create(data)
|
||||
const cover = await File.findByOrFail('label', data.cover)
|
||||
|
||||
await project.related('file').associate(cover)
|
||||
await project.related('cover').associate(cover)
|
||||
await project.related('tags').sync(data.tags!)
|
||||
return response.status(200).send({
|
||||
project
|
||||
})
|
||||
@@ -27,7 +29,8 @@ export default class ProjectsController {
|
||||
|
||||
public async show ({ params, response }: HttpContextContract) {
|
||||
const project = await Project.findOrFail(params.id)
|
||||
await project.load('file')
|
||||
await project.load('cover')
|
||||
await project.load('tags')
|
||||
return response.status(200).send({
|
||||
project
|
||||
})
|
||||
@@ -39,7 +42,8 @@ export default class ProjectsController {
|
||||
const cover = await File.findBy('label', data.cover)
|
||||
|
||||
await project.merge(data).save()
|
||||
if (cover) await project.related('file').associate(cover)
|
||||
if (cover) await project.related('cover').associate(cover)
|
||||
await project.related('tags').sync(data.tags!)
|
||||
return response.status(200).send({
|
||||
project
|
||||
})
|
||||
|
||||
@@ -19,11 +19,13 @@ export default class Project extends BaseModel {
|
||||
@column()
|
||||
public url: string
|
||||
|
||||
@belongsTo(() => File)
|
||||
public file: BelongsTo<typeof File>
|
||||
@belongsTo(() => File, {
|
||||
foreignKey: 'coverId'
|
||||
})
|
||||
public cover: BelongsTo<typeof File>
|
||||
|
||||
@column()
|
||||
public fileId: number
|
||||
public coverId: number
|
||||
|
||||
@manyToMany(() => Tag)
|
||||
public tags: ManyToMany<typeof Tag>
|
||||
|
||||
@@ -10,7 +10,8 @@ export default class ProjectStoreValidator {
|
||||
description: schema.string(),
|
||||
progress: schema.number(),
|
||||
url: schema.string(),
|
||||
cover: schema.string()
|
||||
cover: schema.string(),
|
||||
tags: schema.array.optional().members(schema.string())
|
||||
})
|
||||
|
||||
public messages = {
|
||||
|
||||
@@ -7,7 +7,8 @@ export default class ProjectUpdateValidator {
|
||||
description: schema.string.optional(),
|
||||
progress: schema.number.optional(),
|
||||
url: schema.string.optional(),
|
||||
cover: schema.string.optional()
|
||||
cover: schema.string.optional(),
|
||||
tags: schema.array.optional().members(schema.string())
|
||||
})
|
||||
public messages = {
|
||||
required: 'The field {{field}} is required'
|
||||
|
||||
Reference in New Issue
Block a user