68 lines
2.1 KiB
TypeScript
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 })
|
|
}
|
|
}
|
|
}
|