From 6563cedf88b6a103e26ea64d5a285daef0b00956 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Wed, 1 Jan 2025 09:08:07 -0800 Subject: [PATCH] add jsdoc and validation --- Server/controllers/monitorController.js | 18 ++++++++++++++++++ Server/validation/joi.js | 10 ++++++++++ 2 files changed, 28 insertions(+) diff --git a/Server/controllers/monitorController.js b/Server/controllers/monitorController.js index aa73de18d..e1e37aae0 100644 --- a/Server/controllers/monitorController.js +++ b/Server/controllers/monitorController.js @@ -12,6 +12,8 @@ import { getMonitorStatsByIdParamValidation, getMonitorStatsByIdQueryValidation, getCertificateParamValidation, + getHardwareDetailsByIdParamValidation, + getHardwareDetailsByIdQueryValidation, } from "../validation/joi.js"; import sslChecker from "ssl-checker"; import { successMessages } from "../utils/messages.js"; @@ -104,7 +106,23 @@ class MonitorController { } }; + /** + * Get hardware details for a specific monitor by ID + * @async + * @param {Express.Request} req - Express request object containing monitorId in params + * @param {Express.Response} res - Express response object + * @param {Express.NextFunction} next - Express next middleware function + * @returns {Promise} + * @throws {Error} - Throws error if monitor not found or other database errors + */ getHardwareDetailsById = async (req, res, next) => { + try { + await getHardwareDetailsByIdParamValidation.validateAsync(req.params); + await getHardwareDetailsByIdQueryValidation.validateAsync(req.query); + } catch (error) { + next(handleValidationError(error, SERVICE_NAME)); + return; + } try { const monitor = await this.db.getHardwareDetailsById(req); return res.status(200).json({ diff --git a/Server/validation/joi.js b/Server/validation/joi.js index 141394ac8..dbffef937 100644 --- a/Server/validation/joi.js +++ b/Server/validation/joi.js @@ -232,6 +232,14 @@ const getMonitorURLByQueryValidation = joi.object({ monitorURL: joi.string().uri().required(), }); +const getHardwareDetailsByIdParamValidation = joi.object({ + monitorId: joi.string().required(), +}); + +const getHardwareDetailsByIdQueryValidation = joi.object({ + dateRange: joi.string().valid("day", "week", "month"), +}); + //**************************************** // Alerts //**************************************** @@ -465,6 +473,8 @@ export { getMonitorsByTeamIdQueryValidation, getMonitorStatsByIdParamValidation, getMonitorStatsByIdQueryValidation, + getHardwareDetailsByIdParamValidation, + getHardwareDetailsByIdQueryValidation, getCertificateParamValidation, editMonitorBodyValidation, pauseMonitorParamValidation,