39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
import express from "express";
|
|
import {ClayPIError, GenericPersistenceError} from "./errors";
|
|
import newSnapshotRouter from "./snapshotRouter";
|
|
import {CollectionRegistry} from "./Collections";
|
|
import newByteSeriesRouter from "./byteSeriesRouter";
|
|
|
|
export function newMainRouter(collections: CollectionRegistry) {
|
|
const router = express.Router();
|
|
const snapshotRouter = newSnapshotRouter(collections);
|
|
const byteSeriesRouter = newByteSeriesRouter(collections);
|
|
|
|
router.get("/dashboard", (req, res) => {
|
|
res.render("index.ejs", { rootUrl: req.app.locals.rootUrl });
|
|
});
|
|
router.use("/api/snapshots", snapshotRouter);
|
|
router.use("/api/timeseries", byteSeriesRouter);
|
|
router.use(topLevelErrorHandler);
|
|
|
|
return router;
|
|
}
|
|
|
|
const topLevelErrorHandler: express.ErrorRequestHandler = (err, req, res, next) => {
|
|
const errOutput = {
|
|
error: true,
|
|
message: "",
|
|
};
|
|
if (err instanceof GenericPersistenceError) {
|
|
errOutput.message = `An error occurred accessing the database: ${err.displayMessage}`;
|
|
}
|
|
else if (err instanceof ClayPIError) {
|
|
errOutput.message = `An error occurred: ${err.displayMessage}`;
|
|
}
|
|
else {
|
|
errOutput.message = "An unknown error occurred!";
|
|
}
|
|
console.log({...errOutput, internalMessage: err.message});
|
|
res.status(500).send(errOutput);
|
|
};
|