Add pause routes and controller, implement functionality

This commit is contained in:
Alex Holliday committed 2024-08-28 15:21:59 -07:00
1 parent 1ab423cd76
commit 17174ebe14
7 files changed
+73 -13

No files matched your search

+40 -1
View File
@@ -5,6 +5,7 @@ const {
createMonitorBodyValidation,
editMonitorBodyValidation,
getMonitorsByTeamIdQueryValidation,
pauseMonitorParamValidation,
} = require("../validation/joi");
const sslChecker = require("ssl-checker");
@@ -309,7 +310,7 @@ const editMonitor = async (req, res, next) => {
// Get notifications from the request body
const notifications = req.body.notifications;
const editedMonitor = await req.db.editMonitor(req, res);
const editedMonitor = await req.db.editMonitor(monitorId, req.body);
await req.db.deleteNotificationsByMonitorId(editedMonitor._id);
@@ -337,6 +338,43 @@ const editMonitor = async (req, res, next) => {
}
};
const pauseMonitor = async (req, res, next) => {
try {
await pauseMonitorParamValidation.validateAsync(req.params);
} catch (error) {
error.status = 422;
error.service = SERVICE_NAME;
error.message =
error.details?.[0]?.message || error.message || "Validation Error";
next(error);
}
try {
const monitor = await req.db.getMonitorById(req.params.monitorId);
if (monitor.isActive) {
await req.jobQueue.deleteJob(monitor);
} else {
await req.jobQueue.addJob(monitor._id, monitor);
}
monitor.isActive = !monitor.isActive;
const updatedMonitor = await req.db.editMonitor(
req.params.monitorId,
monitor
);
return res.status(200).json({
success: true,
msg: updatedMonitor.isActive
? successMessages.MONITOR_RESUME
: successMessages.MONITOR_PAUSE,
data: updatedMonitor,
});
} catch (error) {
error.service = SERVICE_NAME;
error.method = "pauseMonitor";
next(error);
}
};
module.exports = {
getAllMonitors,
getMonitorStatsById,
@@ -347,4 +385,5 @@ module.exports = {
deleteMonitor,
deleteAllMonitors,
editMonitor,
pauseMonitor,
};