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 }) } } }