import {HttpContextContract} from "@ioc:Adonis/Core/HttpContext"; import File from "App/Models/File"; import Skill from "App/Models/Skill"; import SkillStoreValidator from "App/Validators/skill/SkillStoreValidator"; import SkillUpdateValidator from "App/Validators/skill/SkillUpdateValidator"; export default class SkillsController { public async index ({ response }: HttpContextContract) { const skills = await Skill .query() .preload('file') return response.status(200).send({ skills: skills }) } public async store ({ request, response }: HttpContextContract) { const data = await request.validate(SkillStoreValidator) const skill = await Skill.create(data) const cover = await File.findBy('label', data.cover) if (cover) await skill.related('file').associate(cover) return response.status(200).send({ skill: skill }) } public async show ({ params, response }: HttpContextContract) { const skill = await Skill.findOrFail(params.id) skill.load('file') return response.status(200).send({ skill }) } public async update ({ request, params, response }: HttpContextContract) { const data = await request.validate(SkillUpdateValidator) const skill = await Skill.findOrFail(params.id) const cover = await File.findBy('label', data.cover) if (cover) await skill.related('file').associate(cover) await skill.merge(data).save() return response.status(200).send({ skill }) } public async destroy ({ response, params }: HttpContextContract) { const skill = await Skill.findOrFail(params.id) await skill.delete() return response.status(200).send({ message: 'Skill successfully deleted!' }) } }