UNPKG

genuinex-screen-sync-server

Version:
107 lines (80 loc) 2.1 kB
/** * @format */ "use strict"; const express = require("express"); const config = require("./config.json"); const model = require("./model"); const router = express.Router(); router.get("/healthcheck", (req, res) => { res.status(204).send(); }); router.get("/api/config", (req, res) => { res.json(config); }); router.get("/api/trends", (req, res) => { model.list((err, rows) => { if (err) { console.error(err); return res.status(500).json({ error: err.message }); } res.json(rows); }); }); router.get("/api/trends/:id", (req, res) => { db.get(req.params.id, (err, trend) => { if (err) { console.error(err); return res.status(500).json({ error: err.message }); } if (!row) { return res.status(404).json({ error: "not found" }); } res.json(trend); }); }); router.post("/api/trends", (req, res) => { const value = parseInt(req.body.value, 10); model.create(req.body.id, value, (err, trend) => { if (err) { console.error(err); if (err.code === "SQLITE_CONSTRAINT") { res.status(400); } else { res.status(500); } return res.json({ error: err.message }); } console.log(trend); req.ws.broadcast(trend); res.status(201).json(trend); }); }); router.put("/api/trends/:id", (req, res) => { const value = parseInt(req.body.value, 10); model.update(req.params.id, value, (err, trend) => { if (err) { console.error(err); return res.status(500).json({ error: err.message }); } req.ws.broadcast(trend); res.json(trend); }); }); router.delete("/api/trends/:id", (req, res) => { model.delete(req.params.id, () => { res.status(204).send(); }); }); router.put("/api/trends/:id/increment", (req, res) => { const value = parseInt(req.body.value, 10); model.increment(req.params.id, (err, trend) => { if (err) { console.error(err); return res.status(500).json({ error: err.message }); } req.ws.broadcast(trend); res.status(201).json(trend); }); }); module.exports = router;