diff --git a/server/src/config/services.js b/server/src/config/services.js index 44fb6491b..762a85d26 100644 --- a/server/src/config/services.js +++ b/server/src/config/services.js @@ -51,6 +51,7 @@ import StatusPage from "../db/models/StatusPage.js"; import Team from "../db/models/Team.js"; import MaintenanceWindow from "../db/models/MaintenanceWindow.js"; import MonitorStats from "../db/models/MonitorStats.js"; +import NetworkCheck from "../db/models/NetworkCheck.js"; import InviteModule from "../db/mongo/modules/inviteModule.js"; import CheckModule from "../db/mongo/modules/checkModule.js"; @@ -59,6 +60,8 @@ import UserModule from "../db/mongo/modules/userModule.js"; import HardwareCheckModule from "../db/mongo/modules/hardwareCheckModule.js"; import MaintenanceWindowModule from "../db/mongo/modules/maintenanceWindowModule.js"; import MonitorModule from "../db/mongo/modules/monitorModule.js"; +import NetworkCheckModule from "../db/mongo/modules/networkCheckModule.js"; + export const initializeServices = async ({ logger, envSettings, settingsService }) => { const serviceRegistry = new ServiceRegistry({ logger }); ServiceRegistry.instance = serviceRegistry; @@ -89,6 +92,7 @@ export const initializeServices = async ({ logger, envSettings, settingsService NormalizeData, NormalizeDataUptimeDetails, }); + const networkCheckModule = new NetworkCheckModule({ NetworkCheck }); const db = new MongoDB({ logger, envSettings, @@ -99,6 +103,7 @@ export const initializeServices = async ({ logger, envSettings, settingsService hardwareCheckModule, maintenanceWindowModule, monitorModule, + networkCheckModule, }); await db.connect(); diff --git a/server/src/db/mongo/MongoDB.js b/server/src/db/mongo/MongoDB.js index f73db6163..96f8062c3 100755 --- a/server/src/db/mongo/MongoDB.js +++ b/server/src/db/mongo/MongoDB.js @@ -40,6 +40,7 @@ class MongoDB { hardwareCheckModule, maintenanceWindowModule, monitorModule, + networkCheckModule, }) { this.logger = logger; this.envSettings = envSettings; @@ -56,6 +57,7 @@ class MongoDB { Object.assign(this, settingsModule); this.statusPageModule = statusPageModule; Object.assign(this, diagnosticModule); + this.networkCheckModule = networkCheckModule; } get serviceName() { diff --git a/server/src/db/mongo/modules/networkCheckModule.js b/server/src/db/mongo/modules/networkCheckModule.js index 12a86e73b..917e68440 100644 --- a/server/src/db/mongo/modules/networkCheckModule.js +++ b/server/src/db/mongo/modules/networkCheckModule.js @@ -1,44 +1,30 @@ -import NetworkCheck from "../../models/NetworkCheck.js"; - const SERVICE_NAME = "networkCheckModule"; -/** - * Creates and saves a new network check document to the database. - * @async - * @param {object} networkCheckData - The data for the new network check. This should conform to the NetworkCheckSchema. - * @param {string} networkCheckData.monitorId - The ID of the monitor associated with this check. - * @returns {Promise} A promise that resolves to the newly created network check document. - * @throws {Error} Throws an error if the database operation fails. - */ -const createNetworkCheck = async (networkCheckData) => { - try { - const networkCheck = await new NetworkCheck(networkCheckData); - await networkCheck.save(); - return networkCheck; - } catch (error) { - error.service = SERVICE_NAME; - error.method = "createNetworkCheck"; - throw error; +class NetworkCheckModule { + constructor({ NetworkCheck }) { + this.NetworkCheck = NetworkCheck; } -}; + createNetworkCheck = async (networkCheckData) => { + try { + const networkCheck = await new this.NetworkCheck(networkCheckData); + await networkCheck.save(); + return networkCheck; + } catch (error) { + error.service = SERVICE_NAME; + error.method = "createNetworkCheck"; + throw error; + } + }; + getNetworkChecksByMonitorId = async (monitorId, limit = 100) => { + try { + const networkChecks = await this.NetworkCheck.find({ monitorId }).sort({ createdAt: -1 }).limit(limit); + return networkChecks; + } catch (error) { + error.service = SERVICE_NAME; + error.method = "getNetworkChecksByMonitorId"; + throw error; + } + }; +} -/** - * Retrieves a list of network checks for a specific monitor, sorted by most recent. - * @async - * @param {string} monitorId - The ID of the monitor to retrieve checks for. - * @param {number} [limit=100] - The maximum number of checks to return. Defaults to 100. - * @returns {Promise>} A promise that resolves to an array of network check documents. - * @throws {Error} Throws an error if the database operation fails. - */ -const getNetworkChecksByMonitorId = async (monitorId, limit = 100) => { - try { - const networkChecks = await NetworkCheck.find({ monitorId }).sort({ createdAt: -1 }).limit(limit); - return networkChecks; - } catch (error) { - error.service = SERVICE_NAME; - error.method = "getNetworkChecksByMonitorId"; - throw error; - } -}; - -export { createNetworkCheck, getNetworkChecksByMonitorId }; +export default NetworkCheckModule;