From 0f298d6450dce5a9552af9c5fb2e96eb52fbac51 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Wed, 18 Jun 2025 23:23:24 +0530 Subject: [PATCH 1/7] Code for network db settings. --- server/db/models/NetworkCheck.js | 46 +++++++++++++++++ server/db/mongo/modules/networkCheckModule.js | 49 +++++++++++++++++++ 2 files changed, 95 insertions(+) create mode 100644 server/db/models/NetworkCheck.js create mode 100644 server/db/mongo/modules/networkCheckModule.js diff --git a/server/db/models/NetworkCheck.js b/server/db/models/NetworkCheck.js new file mode 100644 index 000000000..a6f204b12 --- /dev/null +++ b/server/db/models/NetworkCheck.js @@ -0,0 +1,46 @@ +import mongoose from "mongoose"; +import { BaseCheckSchema } from "./Check.js"; + +const networkInterfaceSchema = mongoose.Schema({ + name: { type: String, required: true }, + bytes_sent: { type: Number, default: 0 }, + bytes_recv: { type: Number, default: 0 }, + packets_sent: { type: Number, default: 0 }, + packets_recv: { type: Number, default: 0 }, + err_in: { type: Number, default: 0 }, + err_out: { type: Number, default: 0 }, + drop_in: { type: Number, default: 0 }, + drop_out: { type: Number, default: 0 }, + fifo_in: { type: Number, default: 0 }, + fifo_out: { type: Number, default: 0 } +}); + +const captureSchema = mongoose.Schema({ + version: { type: String, default: "" }, + mode: { type: String, default: "" } +}); + +const NetworkCheckSchema = mongoose.Schema( + { + ...BaseCheckSchema.obj, + data: { + type: [networkInterfaceSchema], + default: () => [] + }, + capture: { + type: captureSchema, + default: () => ({}) + }, + errors: { + type: mongoose.Schema.Types.Mixed, + default: null + } + }, + { timestamps: true } +); + +NetworkCheckSchema.index({ createdAt: 1 }); +NetworkCheckSchema.index({ monitorId: 1, createdAt: 1 }); +NetworkCheckSchema.index({ monitorId: 1, createdAt: -1 }); + +export default mongoose.model("NetworkCheck", NetworkCheckSchema); \ No newline at end of file diff --git a/server/db/mongo/modules/networkCheckModule.js b/server/db/mongo/modules/networkCheckModule.js new file mode 100644 index 000000000..9aa860302 --- /dev/null +++ b/server/db/mongo/modules/networkCheckModule.js @@ -0,0 +1,49 @@ +import NetworkCheck from "../../models/NetworkCheck.js"; +import logger from "../../../utils/logger.js"; + +const SERVICE_NAME = "networkCheckModule"; + +const createNetworkCheck = async (networkCheckData) => { + try { + const { monitorId, status } = networkCheckData; + const n = (await NetworkCheck.countDocuments({ monitorId })) + 1; + + const networkCheck = await new NetworkCheck({ + ...networkCheckData, + n, + }); + + await networkCheck.save(); + return networkCheck; + } catch (error) { + logger.error({ + message: error.message, + service: SERVICE_NAME, + method: "createNetworkCheck", + stack: error.stack, + }); + throw error; + } +}; + +const getNetworkChecksByMonitorId = async (monitorId, limit = 100) => { + try { + const networkChecks = await NetworkCheck.find({ monitorId }) + .sort({ createdAt: -1 }) + .limit(limit); + return networkChecks; + } catch (error) { + logger.error({ + message: error.message, + service: SERVICE_NAME, + method: "getNetworkChecksByMonitorId", + stack: error.stack, + }); + throw error; + } +}; + +export { + createNetworkCheck, + getNetworkChecksByMonitorId, +}; \ No newline at end of file From 8fe3ed9bd1cfad8e58c2c3c90b3bd170d133f74c Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Wed, 18 Jun 2025 23:30:39 +0530 Subject: [PATCH 2/7] Added formating. --- server/db/models/NetworkCheck.js | 60 ++++++++-------- server/db/mongo/modules/networkCheckModule.js | 69 +++++++++---------- 2 files changed, 63 insertions(+), 66 deletions(-) diff --git a/server/db/models/NetworkCheck.js b/server/db/models/NetworkCheck.js index a6f204b12..eca69eef9 100644 --- a/server/db/models/NetworkCheck.js +++ b/server/db/models/NetworkCheck.js @@ -2,45 +2,45 @@ import mongoose from "mongoose"; import { BaseCheckSchema } from "./Check.js"; const networkInterfaceSchema = mongoose.Schema({ - name: { type: String, required: true }, - bytes_sent: { type: Number, default: 0 }, - bytes_recv: { type: Number, default: 0 }, - packets_sent: { type: Number, default: 0 }, - packets_recv: { type: Number, default: 0 }, - err_in: { type: Number, default: 0 }, - err_out: { type: Number, default: 0 }, - drop_in: { type: Number, default: 0 }, - drop_out: { type: Number, default: 0 }, - fifo_in: { type: Number, default: 0 }, - fifo_out: { type: Number, default: 0 } + name: { type: String, required: true }, + bytes_sent: { type: Number, default: 0 }, + bytes_recv: { type: Number, default: 0 }, + packets_sent: { type: Number, default: 0 }, + packets_recv: { type: Number, default: 0 }, + err_in: { type: Number, default: 0 }, + err_out: { type: Number, default: 0 }, + drop_in: { type: Number, default: 0 }, + drop_out: { type: Number, default: 0 }, + fifo_in: { type: Number, default: 0 }, + fifo_out: { type: Number, default: 0 }, }); const captureSchema = mongoose.Schema({ - version: { type: String, default: "" }, - mode: { type: String, default: "" } + version: { type: String, default: "" }, + mode: { type: String, default: "" }, }); const NetworkCheckSchema = mongoose.Schema( - { - ...BaseCheckSchema.obj, - data: { - type: [networkInterfaceSchema], - default: () => [] - }, - capture: { - type: captureSchema, - default: () => ({}) - }, - errors: { - type: mongoose.Schema.Types.Mixed, - default: null - } - }, - { timestamps: true } + { + ...BaseCheckSchema.obj, + data: { + type: [networkInterfaceSchema], + default: () => [], + }, + capture: { + type: captureSchema, + default: () => ({}), + }, + errors: { + type: mongoose.Schema.Types.Mixed, + default: null, + }, + }, + { timestamps: true } ); NetworkCheckSchema.index({ createdAt: 1 }); NetworkCheckSchema.index({ monitorId: 1, createdAt: 1 }); NetworkCheckSchema.index({ monitorId: 1, createdAt: -1 }); -export default mongoose.model("NetworkCheck", NetworkCheckSchema); \ No newline at end of file +export default mongoose.model("NetworkCheck", NetworkCheckSchema); diff --git a/server/db/mongo/modules/networkCheckModule.js b/server/db/mongo/modules/networkCheckModule.js index 9aa860302..14c5824b8 100644 --- a/server/db/mongo/modules/networkCheckModule.js +++ b/server/db/mongo/modules/networkCheckModule.js @@ -4,46 +4,43 @@ import logger from "../../../utils/logger.js"; const SERVICE_NAME = "networkCheckModule"; const createNetworkCheck = async (networkCheckData) => { - try { - const { monitorId, status } = networkCheckData; - const n = (await NetworkCheck.countDocuments({ monitorId })) + 1; + try { + const { monitorId, status } = networkCheckData; + const n = (await NetworkCheck.countDocuments({ monitorId })) + 1; - const networkCheck = await new NetworkCheck({ - ...networkCheckData, - n, - }); + const networkCheck = await new NetworkCheck({ + ...networkCheckData, + n, + }); - await networkCheck.save(); - return networkCheck; - } catch (error) { - logger.error({ - message: error.message, - service: SERVICE_NAME, - method: "createNetworkCheck", - stack: error.stack, - }); - throw error; - } + await networkCheck.save(); + return networkCheck; + } catch (error) { + logger.error({ + message: error.message, + service: SERVICE_NAME, + method: "createNetworkCheck", + stack: error.stack, + }); + throw error; + } }; const getNetworkChecksByMonitorId = async (monitorId, limit = 100) => { - try { - const networkChecks = await NetworkCheck.find({ monitorId }) - .sort({ createdAt: -1 }) - .limit(limit); - return networkChecks; - } catch (error) { - logger.error({ - message: error.message, - service: SERVICE_NAME, - method: "getNetworkChecksByMonitorId", - stack: error.stack, - }); - throw error; - } + try { + const networkChecks = await NetworkCheck.find({ monitorId }) + .sort({ createdAt: -1 }) + .limit(limit); + return networkChecks; + } catch (error) { + logger.error({ + message: error.message, + service: SERVICE_NAME, + method: "getNetworkChecksByMonitorId", + stack: error.stack, + }); + throw error; + } }; -export { - createNetworkCheck, - getNetworkChecksByMonitorId, -}; \ No newline at end of file +export { createNetworkCheck, getNetworkChecksByMonitorId }; From 223203737ff4313b80dcb6088079f2817649a2a4 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Thu, 19 Jun 2025 22:42:07 +0530 Subject: [PATCH 3/7] Logging error only once as middleware takes care of it. --- server/db/mongo/modules/networkCheckModule.js | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/server/db/mongo/modules/networkCheckModule.js b/server/db/mongo/modules/networkCheckModule.js index 14c5824b8..b515ba5af 100644 --- a/server/db/mongo/modules/networkCheckModule.js +++ b/server/db/mongo/modules/networkCheckModule.js @@ -16,12 +16,8 @@ const createNetworkCheck = async (networkCheckData) => { await networkCheck.save(); return networkCheck; } catch (error) { - logger.error({ - message: error.message, - service: SERVICE_NAME, - method: "createNetworkCheck", - stack: error.stack, - }); + error.service = SERVICE_NAME; + error.method = "createNetworkCheck"; throw error; } }; @@ -33,12 +29,8 @@ const getNetworkChecksByMonitorId = async (monitorId, limit = 100) => { .limit(limit); return networkChecks; } catch (error) { - logger.error({ - message: error.message, - service: SERVICE_NAME, - method: "getNetworkChecksByMonitorId", - stack: error.stack, - }); + error.service = SERVICE_NAME; + error.method = "getNetworkChecksByMonitorId"; throw error; } }; From 4cf38048988ee2665a1dff945b26a02d1b5a6ffb Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Thu, 19 Jun 2025 22:45:04 +0530 Subject: [PATCH 4/7] Formatting issues. --- client/src/locales/en.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/locales/en.json b/client/src/locales/en.json index ff878c3da..fd89d31f5 100644 --- a/client/src/locales/en.json +++ b/client/src/locales/en.json @@ -746,4 +746,4 @@ "settingsEmailPool": "Pool - Enable connection pooling", "sendTestNotifications": "Send test notifications", "selectAll": "Select all" -} \ No newline at end of file +} From 9700551f41edf53d2d3d86ded9cce5ce5bbae265 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 21 Jun 2025 00:18:09 +0530 Subject: [PATCH 5/7] Removal of n count of document. --- server/db/mongo/modules/networkCheckModule.js | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/server/db/mongo/modules/networkCheckModule.js b/server/db/mongo/modules/networkCheckModule.js index b515ba5af..608113a73 100644 --- a/server/db/mongo/modules/networkCheckModule.js +++ b/server/db/mongo/modules/networkCheckModule.js @@ -5,14 +5,7 @@ const SERVICE_NAME = "networkCheckModule"; const createNetworkCheck = async (networkCheckData) => { try { - const { monitorId, status } = networkCheckData; - const n = (await NetworkCheck.countDocuments({ monitorId })) + 1; - - const networkCheck = await new NetworkCheck({ - ...networkCheckData, - n, - }); - + const networkCheck = await new NetworkCheck(networkCheckData); await networkCheck.save(); return networkCheck; } catch (error) { From ba00e9afffe2660da19d3b0c1a299597983e7fb0 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 21 Jun 2025 00:25:30 +0530 Subject: [PATCH 6/7] Added JSDocs in module file. --- server/db/mongo/modules/networkCheckModule.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/server/db/mongo/modules/networkCheckModule.js b/server/db/mongo/modules/networkCheckModule.js index 608113a73..8d44af96f 100644 --- a/server/db/mongo/modules/networkCheckModule.js +++ b/server/db/mongo/modules/networkCheckModule.js @@ -1,8 +1,15 @@ import NetworkCheck from "../../models/NetworkCheck.js"; -import logger from "../../../utils/logger.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); From ecb1ca4517badd21970b11579e95978d80e231a7 Mon Sep 17 00:00:00 2001 From: Owaise Imdad Date: Sat, 21 Jun 2025 00:25:57 +0530 Subject: [PATCH 7/7] Missed to add a line in jsdoc. --- server/db/mongo/modules/networkCheckModule.js | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/server/db/mongo/modules/networkCheckModule.js b/server/db/mongo/modules/networkCheckModule.js index 8d44af96f..53c55c7e3 100644 --- a/server/db/mongo/modules/networkCheckModule.js +++ b/server/db/mongo/modules/networkCheckModule.js @@ -22,6 +22,14 @@ const createNetworkCheck = async (networkCheckData) => { } }; +/** + * 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 })