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 level = req.body.level || 18; const warmupLevel = req.body.warmupLevel || level; const cooldownCpm = req.body.cooldownCpm || cpm; const cooldownLevel = req.body.cooldownLevel || warmupLevel; const data = {name, cpm, warmupMin, warmupCpm, level, warmupLevel, cooldownCpm, cooldownLevel}; const id = await repo.insertProgram(data) return res.status(200).json( {id, ...data} ); } 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; }