Files
Checkmate/Server/db/mongo/modules/hardwareCheckModule.js
T

58 lines
1.6 KiB
JavaScript
Raw Normal View History

2024-10-21 11:54:58 +08:00
import HardwareCheck from "../../models/HardwareCheck.js";
2024-11-30 17:01:38 +08:00
import Monitor from "../../models/Monitor.js";
2024-12-03 11:35:43 +08:00
import logger from "../../../utils/logger.js";
2024-11-30 17:01:38 +08:00
2024-10-21 11:54:58 +08:00
const SERVICE_NAME = "hardwareCheckModule";
const createHardwareCheck = async (hardwareCheckData) => {
try {
2024-11-30 17:01:38 +08:00
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}`,
});
2024-12-03 11:35:43 +08:00
return null;
2024-11-30 17:01:38 +08:00
}
2024-12-19 11:52:27 -08:00
let newUptimePercentage;
2024-11-30 17:01:38 +08:00
if (monitor.uptimePercentage === undefined) {
2024-12-19 11:52:27 -08:00
newUptimePercentage = status === true ? 1 : 0;
2024-11-30 17:01:38 +08:00
} else {
2024-12-19 11:52:27 -08:00
newUptimePercentage =
2024-11-30 17:01:38 +08:00
(monitor.uptimePercentage * (n - 1) + (status === true ? 1 : 0)) / n;
}
2024-12-19 11:52:27 -08:00
await Monitor.findOneAndUpdate(
{ _id: monitorId },
{ uptimePercentage: newUptimePercentage }
);
2024-10-21 11:54:58 +08:00
const hardwareCheck = await new HardwareCheck({
...hardwareCheckData,
}).save();
return hardwareCheck;
} catch (error) {
2024-12-19 11:52:27 -08:00
console.log("error creating hardware check", error);
2024-10-21 11:54:58 +08:00
error.service = SERVICE_NAME;
error.method = "createHardwareCheck";
throw error;
}
};
2024-12-09 14:01:10 +08:00
const deleteHardwareChecksByMonitorId = async (monitorId) => {
try {
const result = await HardwareCheck.deleteMany({ monitorId });
return result.deletedCount;
} catch (error) {
error.service = SERVICE_NAME;
error.method = "deleteHardwareChecksByMonitorId";
throw error;
}
};
export { createHardwareCheck, deleteHardwareChecksByMonitorId };