UNPKG

@bonliva/agendash

Version:

A modern dashboard for Agenda.js with Pagination and Search capabilities

78 lines (65 loc) 1.9 kB
const path = require("path"); const bodyParser = require("koa-bodyparser"); const Router = require("koa-router"); const koaStatic = require("koa-static"); const csp = require("../csp"); module.exports = (agendash) => { const middlewares = []; middlewares.push(async (ctx, next) => { await next(); ctx.set("Content-Security-Policy", csp); }); middlewares.push( koaStatic(path.resolve(__dirname, "../../public"), { defer: true }) ); middlewares.push(bodyParser()); const routerApi = new Router(); routerApi.get("/api", async ({ response, query }) => { const { job, state, skip, limit, q, property, isObjectId } = query; try { response.body = await agendash.api(job, state, { query: q, property, isObjectId, skip, limit, }); } catch (error) { response.status = 400; response.body = error; } }); routerApi.post("/api/jobs/requeue", async ({ request, response }) => { try { response.body = await agendash.requeueJobs(request.body.jobIds); } catch (error) { response.status = 404; response.body = error; } }); routerApi.post("/api/jobs/delete", async ({ request, response }) => { try { await agendash.deleteJobs(request.body.jobIds); response.body = { deleted: true, }; } catch (error) { response.status = 404; response.body = error; } }); routerApi.post("/api/jobs/create", async ({ request, response }) => { const { jobData, jobName, jobSchedule, jobRepeatEvery } = request.body; try { await agendash.createJob(jobName, jobSchedule, jobRepeatEvery, jobData); response.body = { created: true, }; } catch (error) { response.status = 404; response.body = error; } }); middlewares.push(routerApi.middleware()); return middlewares; };