From d4312eef17994ca466ecc1539eb4dae1a6046126 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Sat, 30 Nov 2024 17:01:38 +0800 Subject: [PATCH] Add uptime percentage to Hardware Check --- .../db/mongo/modules/hardwareCheckModule.js | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/Server/db/mongo/modules/hardwareCheckModule.js b/Server/db/mongo/modules/hardwareCheckModule.js index de46828e5..00b2c1c07 100644 --- a/Server/db/mongo/modules/hardwareCheckModule.js +++ b/Server/db/mongo/modules/hardwareCheckModule.js @@ -1,7 +1,29 @@ import HardwareCheck from "../../models/HardwareCheck.js"; +import Monitor from "../../models/Monitor.js"; + const SERVICE_NAME = "hardwareCheckModule"; const createHardwareCheck = async (hardwareCheckData) => { try { + const { monitorId, status } = hardwareCheckData; + const n = (await HardwareCheck.countDocuments({ monitorId })) + 1; + const monitor = await Monitor.findById(monitorId); + + if (!monitor) { + logger.error({ + message: "Monitor not found", + service: SERVICE_NAME, + method: "createHardwareCheck", + details: `monitor ID: ${monitorId}`, + }); + } + + if (monitor.uptimePercentage === undefined) { + monitor.uptimePercentage = status === true ? 1 : 0; + } else { + monitor.uptimePercentage = + (monitor.uptimePercentage * (n - 1) + (status === true ? 1 : 0)) / n; + } + await monitor.save(); const hardwareCheck = await new HardwareCheck({ ...hardwareCheckData, }).save();