genuinex-screen-sync-server
Version:
GenuineX key value sync server
107 lines (80 loc) • 2.1 kB
JavaScript
/**
* @format
*/
;
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;