ATC_SIMPLE/BACKEND/app/controllers/lines_controller.ts

68 lines
2.1 KiB
TypeScript

import Line from '#models/line'
import type { HttpContext } from '@adonisjs/core/http'
import Log from '#models/log'
export default class LinesController {
/**
* Display a list of resource
*/
async get({}: HttpContext) {
const lines = await Line.all()
return { status: true, data: lines }
}
/**
* Display form to create a new record
*/
async create({ auth, request, response }: HttpContext) {
let payload = request.only([...Array.from(Line.$columnsDefinitions.keys()), 'station_id'])
try {
const line = await Line.create(payload)
return response.created({ status: true, message: 'Line created successfully', data: line })
} catch (error) {
return response.badRequest({ error: error, message: 'Line create failed', status: false })
}
}
async update({ request, response, auth }: HttpContext) {
let payload = request.only(
Array.from(Line.$columnsDefinitions.keys()).filter(
(f) => f !== 'created_at' && f !== 'updated_at'
)
)
try {
const line = await Line.find(request.body().id)
if (!line) {
return response.status(404).json({ message: 'Line not found' })
}
Object.assign(line, payload)
await line.save()
return response.ok({ status: true, message: 'Line update successfully', data: line })
} catch (error) {
return response.badRequest({ error: error, message: 'Line update failed', status: false })
}
}
/**
* Delete record
*/
async delete({ auth, request, response }: HttpContext) {
try {
const line = await Line.find(request.body().id)
if (!line) {
return response.status(404).json({ message: 'line not found' })
}
const logs = await Log.query().where('line_id', line.id)
for (const log of logs) {
await log.delete()
}
// Delete the line
await line.delete()
return response.ok({ status: true, message: 'Line delete successfully', data: line })
} catch (error) {
return response.badRequest({ error: error, message: 'Line delete failed', status: false })
}
}
}