import Prisma from "@prisma/client"; const prisma = new Prisma.PrismaClient(); export function registerAdmin(app) { app.get("/api/admin/timetable", listTimetables); app.post("/api/admin/timetable", createTimetable); app.put("/api/admin/timetable", editTimetable); app.delete("/api/admin/timetable", deleteTimetable); } function sendMissingArguments(res) { res.status(400).send({ success: false, error: "missing_arguments", }); } async function listTimetables(_, res) { res.send( await prisma.timetable.findMany({ select: { id: true, title: true, class: true, source: true, trusted: true, }, }) ); } async function createTimetable(req, res) { let data = req.body; if (!data.title || !data.data || !data.class) { sendMissingArguments(res); return; } const timetable = await prisma.timetable.create({ data: req.body, }); res.status(201).send(timetable); } async function editTimetable(req, res) { let id = parseInt(req.query.id); if (!id) { sendMissingArguments(res); return; } try { const timetable = await prisma.timetable.update({ where: { id, }, data: req.body, }); res.status(201).send(timetable); } catch (e) { res.status(500).send(e); } } async function deleteTimetable(req, res) { if (!req.query.id) { sendMissingArguments(res); return; } try { await prisma.timetable.delete({ where: { id: parseInt(req.query.id), }, }); res.status(200).send(); } catch (e) { res.status(500).send(e); } }