Files
Checkmate/server/src/api/routes/monitorRoutes.ts
T
2026-08-28 14:03:27 -07:00

57 lines
2.4 KiB
TypeScript

import { Router } from "express";
import { isAllowed } from "@/api/middleware/isAllowed.js";
import { IMonitorController } from "@/api/controllers/monitorController.js";
export const createMonitorRoutes = (monitorController: IMonitorController): Router => {
const router = Router();
// Team routes
router.get("/team", monitorController.getMonitorsByTeamId);
router.get("/team/with-checks", monitorController.getMonitorsWithChecksByTeamId);
// Uptime routes
router.get("/uptime/details/:monitorId", monitorController.getUptimeDetailsById);
// Hardware routes
router.get("/hardware/details/:monitorId", monitorController.getHardwareDetailsById);
// PageSpeed routes
router.get("/pagespeed/details/:monitorId", monitorController.getPageSpeedDetailsById);
// Docker routes
router.get("/docker/details/:monitorId", monitorController.getDockerDetailsById);
// Geo checks routes
router.get("/:monitorId/geo-checks", monitorController.getGeoChecksByMonitorId);
// General monitor routes
router.post("/pause/:monitorId", isAllowed(["admin", "superadmin"]), monitorController.pauseMonitor);
router.post("/bulk/pause", isAllowed(["admin", "superadmin"]), monitorController.bulkPauseMonitors);
// Util routes
router.get("/certificate/:monitorId", (req, res, next) => {
monitorController.getMonitorCertificate(req, res, next);
});
router.get("/domain/:monitorId", (req, res, next) => {
monitorController.getMonitorDomain(req, res, next);
});
// General monitor CRUD routes
router.patch("/notifications", isAllowed(["admin", "superadmin"]), monitorController.updateNotifications);
router.post("/", isAllowed(["admin", "superadmin"]), monitorController.createMonitor);
router.delete("/", isAllowed(["superadmin"]), monitorController.deleteAllMonitors);
// Other static routes
router.post("/demo", isAllowed(["admin", "superadmin"]), monitorController.addDemoMonitors);
router.get("/export/json", isAllowed(["admin", "superadmin"]), monitorController.exportMonitorsToJSON);
router.post("/import/json", isAllowed(["admin", "superadmin"]), monitorController.importMonitorsFromJSON);
router.get("/games", monitorController.getAllGames);
// Individual monitor CRUD routes
router.get("/:monitorId", monitorController.getMonitorById);
router.patch("/:monitorId", isAllowed(["admin", "superadmin"]), monitorController.editMonitor);
router.delete("/:monitorId", isAllowed(["admin", "superadmin"]), monitorController.deleteMonitor);
return router;
};