const express = require("express"); /** * @param {import("../repositories/sqlite3")} repo */ module.exports = function programRouter(repo) { const router = express.Router({caseSensitive: false}); router.get("/", async(_, res) => { try { const programs = await repo.listPrograms(); return res.status(200).json(programs); } catch (err) { return res.status(400).json({code: 400, message: err.message || err}) } }); router.get("/:id", async(req, res) => { try { const program = await repo.findProgram(req.params.id); if (program == null) { return res.status(404).json({code: 404, message: "program not found"}) } return res.status(200).json(program); } catch (err) { return res.status(500).json({code: 500, message: err.message || err}) } }); router.post("/", async(req, res) => { try { const {name, cpm, warmupMin, warmupCpm} = req.body; const id = await repo.insertProgram({name, cpm, warmupMin, warmupCpm}) return res.status(200).json({id, name, cpm, warmupMin, warmupCpm}); } catch (err) { return res.status(400).json({code: 400, message: err.message || err}) } }); router.put("/:id", async(req, res) => { try { const program = await repo.findProgram(req.params.id); if (program == null) { return res.status(404).json({code: 404, message: "program not found"}) } program.name = req.body.name || ""; await repo.updateProgram(program); return res.status(200).json(program); } catch (err) { return res.status(400).json({code: 400, message: err.message || err}) } }); router.delete("/:id", async(req, res) => { try { const program = await repo.findProgram(req.params.id); if (program == null) { return res.status(404).json({code: 404, message: "program not found"}) } await repo.deleteProgram(program); return res.status(200).json(program); } catch (err) { return res.status(500).json({code: 500, message: err.message || err}) } }); return router; }