diff --git a/Server/controllers/maintenanceWindowController.js b/Server/controllers/maintenanceWindowController.js index bd92b4dc1..ee15e06db 100644 --- a/Server/controllers/maintenanceWindowController.js +++ b/Server/controllers/maintenanceWindowController.js @@ -2,6 +2,7 @@ const { createMaintenanceWindowBodyValidation, getMaintenanceWindowsByMonitorIdParamValidation, getMaintenanceWindowsByTeamIdQueryValidation, + deleteMaintenanceWindowByIdParamValidation, } = require("../validation/joi"); const jwt = require("jsonwebtoken"); const { getTokenFromHeaders } = require("../utils/utils"); @@ -116,8 +117,34 @@ const getMaintenanceWindowsByMonitorId = async (req, res, next) => { next(error); } }; + +const deleteMaintenanceWindow = async (req, res, next) => { + try { + await deleteMaintenanceWindowByIdParamValidation.validateAsync(req.params); + } catch (error) { + error.status = 422; + error.service = SERVICE_NAME; + error.message = + error.details?.[0]?.message || error.message || "Validation Error"; + next(error); + return; + } + try { + await req.db.deleteMaintenanceWindowById(req.params.id); + return res.status(201).json({ + success: true, + msg: successMessages.MAINTENANCE_WINDOW_DELETE, + }); + } catch (error) { + error.service === undefined ? (error.service = SERVICE_NAME) : null; + error.method === undefined + ? (error.method = "deleteMaintenanceWindow") + : null; + } +}; module.exports = { createMaintenanceWindows, getMaintenanceWindowsByTeamId, getMaintenanceWindowsByMonitorId, + deleteMaintenanceWindow, }; diff --git a/Server/routes/maintenanceWindowRoute.js b/Server/routes/maintenanceWindowRoute.js index d4aa2908a..f7a095abc 100644 --- a/Server/routes/maintenanceWindowRoute.js +++ b/Server/routes/maintenanceWindowRoute.js @@ -13,4 +13,6 @@ router.get( router.get("/team/", maintenanceWindowController.getMaintenanceWindowsByTeamId); +router.delete("/:id", maintenanceWindowController.deleteMaintenanceWindow); + module.exports = router; diff --git a/Server/utils/messages.js b/Server/utils/messages.js index 47e3061b5..3b6244faa 100644 --- a/Server/utils/messages.js +++ b/Server/utils/messages.js @@ -96,6 +96,7 @@ const successMessages = { MAINTENANCE_WINDOW_CREATE: "Maintenance Window created successfully", MAINTENANCE_WINDOW_GET_BY_TEAM: "Got Maintenance Windows by Team successfully", + MAINTENANCE_WINDOW_DELETE: "Maintenance Window deleted successfully", //Ping Operations PING_SUCCESS: "Success", diff --git a/Server/validation/joi.js b/Server/validation/joi.js index d8e9b61cd..43ca26c85 100644 --- a/Server/validation/joi.js +++ b/Server/validation/joi.js @@ -384,6 +384,10 @@ const getMaintenanceWindowsByMonitorIdParamValidation = joi.object({ monitorId: joi.string().required(), }); +const deleteMaintenanceWindowByIdParamValidation = joi.object({ + id: joi.string().required(), +}); + //**************************************** // SettingsValidation //**************************************** @@ -452,5 +456,6 @@ module.exports = { createMaintenanceWindowBodyValidation, getMaintenanceWindowsByTeamIdQueryValidation, getMaintenanceWindowsByMonitorIdParamValidation, + deleteMaintenanceWindowByIdParamValidation, updateAppSettingsBodyValidation, };