Files
Checkmate/Server/controllers/maintenanceWindowController.js
T

122 lines
3.6 KiB
JavaScript
Raw Normal View History

2024-07-30 10:01:52 -07:00
const {
createMaintenanceWindowBodyValidation,
getMaintenanceWindowsByMonitorIdParamValidation,
2024-10-04 13:49:53 +08:00
getMaintenanceWindowsByTeamIdQueryValidation,
2024-07-30 10:01:52 -07:00
} = require("../validation/joi");
2024-10-04 12:31:44 +08:00
const jwt = require("jsonwebtoken");
const { getTokenFromHeaders } = require("../utils/utils");
const { successMessages } = require("../utils/messages");
2024-07-30 10:01:52 -07:00
const SERVICE_NAME = "maintenanceWindowController";
const createMaintenanceWindows = async (req, res, next) => {
2024-07-30 10:01:52 -07:00
try {
await createMaintenanceWindowBodyValidation.validateAsync(req.body);
} catch (error) {
error.status = 422;
error.service = SERVICE_NAME;
2024-07-30 13:56:38 -07:00
error.message =
error.details?.[0]?.message || error.message || "Validation Error";
2024-07-30 10:01:52 -07:00
next(error);
2024-07-30 14:00:19 -07:00
return;
2024-07-30 10:01:52 -07:00
}
try {
2024-10-04 12:31:44 +08:00
const token = getTokenFromHeaders(req.headers);
const { jwtSecret } = req.settingsService.getSettings();
const { teamId } = jwt.verify(token, jwtSecret);
const monitorIds = req.body.monitors;
const dbTransactions = monitorIds.map((monitorId) => {
return req.db.createMaintenanceWindow({
2024-10-04 12:31:44 +08:00
teamId,
monitorId,
active: req.body.active ? req.body.active : true,
repeat: req.body.repeat,
start: req.body.start,
end: req.body.end,
});
});
await Promise.all(dbTransactions);
2024-07-30 10:01:52 -07:00
return res.status(201).json({
success: true,
msg: successMessages.MAINTENANCE_WINDOW_CREATE,
});
} catch (error) {
error.service === undefined ? (error.service = SERVICE_NAME) : null;
error.method === undefined
? (error.method = "createMaintenanceWindow")
: null;
2024-07-30 10:01:52 -07:00
next(error);
}
};
2024-10-04 13:49:53 +08:00
const getMaintenanceWindowsByTeamId = async (req, res, next) => {
2024-07-30 10:01:52 -07:00
try {
2024-10-04 13:49:53 +08:00
await getMaintenanceWindowsByTeamIdQueryValidation.validateAsync(req.query);
2024-07-30 13:56:38 -07:00
} catch (error) {
error.status = 422;
error.service = SERVICE_NAME;
error.message =
error.details?.[0]?.message || error.message || "Validation Error";
next(error);
2024-07-30 14:00:19 -07:00
return;
2024-07-30 13:56:38 -07:00
}
2024-10-04 13:49:53 +08:00
2024-07-30 13:56:38 -07:00
try {
2024-10-04 13:49:53 +08:00
const token = getTokenFromHeaders(req.headers);
const { jwtSecret } = req.settingsService.getSettings();
const { teamId } = jwt.verify(token, jwtSecret);
const maintenanceWindows = await req.db.getMaintenanceWindowsByTeamId(
teamId,
req.query
2024-07-30 10:01:52 -07:00
);
return res.status(201).json({
success: true,
2024-10-04 13:49:53 +08:00
msg: successMessages.MAINTENANCE_WINDOW_GET_BY_TEAM,
2024-07-30 10:01:52 -07:00
data: maintenanceWindows,
});
} catch (error) {
error.service === undefined ? (error.service = SERVICE_NAME) : null;
error.method === undefined
? (error.method = "getMaintenanceWindowsByUserId")
: null;
2024-07-30 10:01:52 -07:00
next(error);
}
};
const getMaintenanceWindowsByMonitorId = async (req, res, next) => {
try {
await getMaintenanceWindowsByMonitorIdParamValidation.validateAsync(
req.params
);
2024-07-30 13:56:38 -07:00
} catch (error) {
error.status = 422;
error.service = SERVICE_NAME;
error.message =
error.details?.[0]?.message || error.message || "Validation Error";
next(error);
2024-07-30 14:00:19 -07:00
return;
2024-07-30 13:56:38 -07:00
}
2024-07-30 10:01:52 -07:00
2024-07-30 13:56:38 -07:00
try {
2024-07-30 10:01:52 -07:00
const maintenanceWindows = await req.db.getMaintenanceWindowsByMonitorId(
req.params.monitorId
);
return res.status(201).json({
success: true,
msg: successMessages.MAINTENANCE_WINDOW_GET_BY_USER,
2024-07-30 10:01:52 -07:00
data: maintenanceWindows,
});
} catch (error) {
error.service === undefined ? (error.service = SERVICE_NAME) : null;
error.method === undefined
? (error.method = "getMaintenanceWindowsByMonitorId")
: null;
2024-07-30 10:01:52 -07:00
next(error);
}
};
module.exports = {
createMaintenanceWindows,
2024-10-04 13:49:53 +08:00
getMaintenanceWindowsByTeamId,
2024-07-30 10:01:52 -07:00
getMaintenanceWindowsByMonitorId,
};