UNPKG

@sidequest/dashboard

Version:

@sidequest/dashboard is the web dashboard for Sidequest, a distributed background job queue system.

38 lines (35 loc) 1.31 kB
import { Router } from 'express'; async function renderQueuesTable(backend, req, res) { const queues = await backend.listQueues({ column: "name", order: "asc" }); const jobsFromQueues = await backend.countJobsByQueues(); const parsedQueues = queues?.map((queue) => ({ ...queue, jobs: jobsFromQueues[queue.name], })); const isHtmx = req.get("hx-request"); if (isHtmx) { res.render("partials/queues-table", { queues: parsedQueues, layout: false }); } else { res.render("pages/queues", { title: "Queues", queues: parsedQueues }); } } function createQueuesRouter(backend) { const queuesRouter = Router(); queuesRouter.get("/", async (req, res) => { await renderQueuesTable(backend, req, res); }); queuesRouter.patch("/:name/toggle", async (req, res) => { const queue = await backend.getQueue(req.params.name); if (queue) { await backend.updateQueue({ ...queue, state: queue.state === "active" ? "paused" : "active" }); res.header("HX-Trigger", "toggleQueue").status(200).end(); } else { res.status(404).end(); } }); return ["/queues", queuesRouter]; } export { createQueuesRouter, renderQueuesTable }; //# sourceMappingURL=queues.js.map