You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

74 lines
2.1 KiB

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