@statusfy/core
Version:
Core of Statusfy
96 lines (79 loc) • 2.61 kB
JavaScript
const { Router } = require("express");
const createDatabase = require("../../lib/content/database");
const response = require("../utils/response");
const request = require("../utils/request");
const buildRouter = siteConfig => {
const router = Router();
const incidentsPath = siteConfig.build.isStatic
? "/incidents.page-:page.:lang.json"
: "/incidents";
const incidentsHistoryPath = siteConfig.build.isStatic
? "/incidents/history.page-:page.:lang.json"
: "/incidents/history";
const incidentTimelinePath = siteConfig.build.isStatic
? "/incidents/timeline.:lang.json"
: "/incidents/timeline";
const incidentPath = siteConfig.build.isStatic
? "/incidents/:id.:lang.json"
: "/incidents/:id";
router.get(incidentsPath, async (req, res, next) => {
const { language, page, siteConfig } = request(req);
const send = response(res, language);
try {
const database = await createDatabase(siteConfig);
const data = database.incidents(language, Number(page));
if (data.page > data.total_pages) {
send.notFound();
} else {
send.json(data);
}
} catch (error) {
next(error);
}
});
router.get(incidentsHistoryPath, async (req, res, next) => {
const { language, page, siteConfig } = request(req);
const send = response(res, language);
try {
const database = await createDatabase(siteConfig);
const data = database.incidentsHistory(language, Number(page));
if (data.count === 0) {
send.json(data);
} else if (data.page > data.total_pages) {
send.notFound();
} else {
send.json(data);
}
} catch (error) {
next(error);
}
});
router.get(incidentTimelinePath, async (req, res, next) => {
const { language, siteConfig } = request(req);
const send = response(res, language);
try {
const database = await createDatabase(siteConfig);
send.json(database.incidentsTimeline(language));
} catch (error) {
next(error);
}
});
router.get(incidentPath, async (req, res, next) => {
const { id } = req.params;
const { language, siteConfig } = request(req);
const send = response(res, language);
try {
const database = await createDatabase(siteConfig);
const incident = database.incident(id, language);
if (incident) {
send.json(database.incident(id, language));
} else {
send.notFound("Incident not found.");
}
} catch (error) {
next(error);
}
});
return router;
};
module.exports = buildRouter;