ATC_SIMPLE/BACKEND/app/controllers/keywords_controller.ts

96 lines
2.6 KiB
TypeScript

import Keyword from '#models/keywords'
import type { HttpContext } from '@adonisjs/core/http'
export default class KeywordsController {
/**
* Display a list of resource
*/
async get({}: HttpContext) {
const keywords = await Keyword.all()
return { status: true, data: keywords }
}
/**
* Display form to create a new record
*/
async create({ auth, request, response }: HttpContext) {
let payload = request.only([...Array.from(Keyword.$columnsDefinitions.keys())])
try {
// Check exist model
const existedKeyword = await Keyword.findBy('name', payload.name)
if (existedKeyword) {
return response.badRequest({
status: false,
message: 'Keyword already exists',
})
}
const keyword = await Keyword.create({
...payload,
})
return response.created({
status: true,
message: 'Keyword created successfully',
data: keyword,
})
} catch (error) {
return response.badRequest({ error: error, message: 'Keyword create failed', status: false })
}
}
async update({ request, response, auth }: HttpContext) {
let payload = request.only(
Array.from(Keyword.$columnsDefinitions.keys()).filter(
(f) => f !== 'created_at' && f !== 'updated_at'
)
)
try {
const keyword = await Keyword.find(request.body().id)
if (!keyword) {
return response.status(404).json({ message: 'Keyword not found' })
}
// Check exist model
const existedKeyword = await Keyword.findBy('name', payload.name)
if (existedKeyword && existedKeyword.id !== keyword.id) {
return response.badRequest({
status: false,
message: 'Keyword already exists',
})
}
Object.assign(keyword, { ...payload })
await keyword.save()
return response.ok({ status: true, message: 'Keyword update successfully', data: keyword })
} catch (error) {
return response.badRequest({ error: error, message: 'Keyword update failed', status: false })
}
}
/**
* Delete record
*/
async delete({ auth, request, response }: HttpContext) {
try {
const keyword = await Keyword.find(request.body().id)
if (!keyword) {
return response.status(404).json({ message: 'Keyword not found' })
}
// Delete the keyword
await keyword.delete()
return response.ok({
status: true,
message: 'Keyword delete successfully',
data: keyword,
})
} catch (error) {
return response.badRequest({
error: error,
message: 'Keyword delete failed',
status: false,
})
}
}
}