diff --git a/server/src/config/services.js b/server/src/config/services.js index 8ac7c72e2..54f226051 100644 --- a/server/src/config/services.js +++ b/server/src/config/services.js @@ -51,7 +51,7 @@ import InviteModule from "../db/mongo/modules/inviteModule.js"; import CheckModule from "../db/mongo/modules/checkModule.js"; import StatusPageModule from "../db/mongo/modules/statusPageModule.js"; import UserModule from "../db/mongo/modules/userModule.js"; - +import HardwareCheckModule from "../db/mongo/modules/hardwareCheckModule.js"; export const initializeServices = async ({ logger, envSettings, settingsService }) => { const serviceRegistry = new ServiceRegistry({ logger }); ServiceRegistry.instance = serviceRegistry; @@ -66,7 +66,8 @@ export const initializeServices = async ({ logger, envSettings, settingsService const inviteModule = new InviteModule({ InviteToken, crypto, stringService }); const statusPageModule = new StatusPageModule({ StatusPage, NormalizeData, stringService }); const userModule = new UserModule({ User, Team, GenerateAvatarImage, ParseBoolean, stringService }); - const db = new MongoDB({ logger, envSettings, checkModule, inviteModule, statusPageModule, userModule }); + const hardwareCheckModule = new HardwareCheckModule({ HardwareCheck, Monitor, logger }); + const db = new MongoDB({ logger, envSettings, checkModule, inviteModule, statusPageModule, userModule, hardwareCheckModule }); await db.connect(); diff --git a/server/src/db/mongo/MongoDB.js b/server/src/db/mongo/MongoDB.js index 158f68f7c..077aa5b73 100755 --- a/server/src/db/mongo/MongoDB.js +++ b/server/src/db/mongo/MongoDB.js @@ -18,11 +18,6 @@ import * as monitorModule from "./modules/monitorModule.js"; import * as pageSpeedCheckModule from "./modules/pageSpeedCheckModule.js"; -//**************************************** -// Hardware Checks -//**************************************** -import * as hardwareCheckModule from "./modules/hardwareCheckModule.js"; - //**************************************** // Maintenance Window //**************************************** @@ -46,7 +41,7 @@ import * as diagnosticModule from "./modules/diagnosticModule.js"; class MongoDB { static SERVICE_NAME = "MongoDB"; - constructor({ logger, envSettings, checkModule, inviteModule, statusPageModule, userModule }) { + constructor({ logger, envSettings, checkModule, inviteModule, statusPageModule, userModule, hardwareCheckModule }) { this.logger = logger; this.envSettings = envSettings; this.userModule = userModule; @@ -54,7 +49,7 @@ class MongoDB { Object.assign(this, recoveryModule); Object.assign(this, monitorModule); Object.assign(this, pageSpeedCheckModule); - Object.assign(this, hardwareCheckModule); + this.hardwareCheckModule = hardwareCheckModule; this.checkModule = checkModule; Object.assign(this, maintenanceWindowModule); Object.assign(this, notificationModule); diff --git a/server/src/db/mongo/modules/hardwareCheckModule.js b/server/src/db/mongo/modules/hardwareCheckModule.js index 9cb228bc4..448e72fed 100755 --- a/server/src/db/mongo/modules/hardwareCheckModule.js +++ b/server/src/db/mongo/modules/hardwareCheckModule.js @@ -1,70 +1,22 @@ -import HardwareCheck from "../../models/HardwareCheck.js"; -import Monitor from "../../models/Monitor.js"; -import { logger } from "../../../utils/logger.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}`, - }); - return null; +class HardwareCheckModule { + constructor({ HardwareCheck, Monitor, logger }) { + this.HardwareCheck = HardwareCheck; + this.Monitor = Monitor; + this.logger = logger; + } + + createHardwareChecks = async (hardwareChecks) => { + try { + await this.HardwareCheck.insertMany(hardwareChecks, { ordered: false }); + return true; + } catch (error) { + error.service = SERVICE_NAME; + error.method = "createHardwareChecks"; + throw error; } + }; +} - let newUptimePercentage; - if (monitor.uptimePercentage === undefined) { - newUptimePercentage = status === true ? 1 : 0; - } else { - newUptimePercentage = (monitor.uptimePercentage * (n - 1) + (status === true ? 1 : 0)) / n; - } - - await Monitor.findOneAndUpdate({ _id: monitorId }, { uptimePercentage: newUptimePercentage }); - - const hardwareCheck = await new HardwareCheck({ - ...hardwareCheckData, - }).save(); - return hardwareCheck; - } catch (error) { - logger.error({ - message: "Error creating hardware check", - service: SERVICE_NAME, - method: "createHardwareCheck", - stack: error.stack, - }); - error.service = SERVICE_NAME; - error.method = "createHardwareCheck"; - throw error; - } -}; - -const createHardwareChecks = async (hardwareChecks) => { - try { - await HardwareCheck.insertMany(hardwareChecks, { ordered: false }); - return true; - } catch (error) { - error.service = SERVICE_NAME; - error.method = "createHardwareChecks"; - throw error; - } -}; - -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, createHardwareChecks, deleteHardwareChecksByMonitorId }; +export default HardwareCheckModule; diff --git a/server/src/service/infrastructure/bufferService.js b/server/src/service/infrastructure/bufferService.js index e772c313d..b29cf533b 100755 --- a/server/src/service/infrastructure/bufferService.js +++ b/server/src/service/infrastructure/bufferService.js @@ -23,7 +23,7 @@ class BufferService { this.OPERATION_MAP = { checks: this.db.checkModule.createChecks, pagespeedChecks: this.db.createPageSpeedChecks, - hardwareChecks: this.db.createHardwareChecks, + hardwareChecks: this.db.hardwareCheckModule.createHardwareChecks, }; this.scheduleNextFlush();