diff --git a/README.md b/README.md index 5e0ade008..e40dc81e6 100644 --- a/README.md +++ b/README.md @@ -6,11 +6,17 @@ ![](https://img.shields.io/github/issues-pr/bluewave-labs/bluewave-uptime) ![](https://img.shields.io/github/issues/bluewave-labs/bluewave-uptime) -![]() -# BlueWave Uptime +

BlueWave Uptime

-BlueWave Uptime is an open source server monitoring application. It is used to track the operational status and performance of servers and websites. It regularly checks whether a server/website is accessible and performs optimally, providing real-time alerts and reports on the monitored services' availability, downtime, and response time. +

An open source server monitoring application

+ + + +![bluewave-uptime-screenshot](https://github.com/user-attachments/assets/765bf060-e734-45e6-bd00-2a2eb37c9c02) + + +BlueWave Uptime is an open source server monitoring application used to track the operational status and performance of servers and websites. It regularly checks whether a server/website is accessible and performs optimally, providing real-time alerts and reports on the monitored services' availability, downtime, and response time. ## Contributing diff --git a/Server/db/MongoDB.js b/Server/db/MongoDB.js index 02447022e..fbe3faf91 100644 --- a/Server/db/MongoDB.js +++ b/Server/db/MongoDB.js @@ -4,6 +4,7 @@ const UserModel = require("../models/user"); const Check = require("../models/Check"); const Alert = require("../models/Alert"); const RecoveryToken = require("../models/RecoveryToken"); +const PageSpeedCheck = require("../models/PageSpeedCheck"); const InviteToken = require("../models/InviteToken"); const crypto = require("crypto"); const DUPLICATE_KEY_CODE = 11000; // MongoDB error code for duplicate key @@ -508,6 +509,66 @@ const editMonitor = async (req, res) => { } }; +//**************************************** +// Page Speed Checks +//**************************************** + +/** + * Create a PageSpeed check for a monitor + * @async + * @param {Object} pageSpeedCheckData + * @param {string} pageSpeedCheckData.monitorId + * @param {number} pageSpeedCheckData.accessibility + * @param {number} pageSpeedCheckData.bestPractices + * @param {number} pageSpeedCheckData.seo + * @param {number} pageSpeedCheckData.performance + * @returns {Promise} + * @throws {Error} + */ + +const createPageSpeedCheck = async (pageSpeedCheckData) => { + try { + const pageSpeedCheck = await new pageSpeedCheck({ ...pageSpeedCheckData }).save(); + return pageSpeedCheck; + } catch (error) { + throw error; + } +}; + +/** + * Get all PageSpeed checks for a monitor + * @async + * @param {string} monitorId + * @returns {Promise>} + * @throws {Error} + */ + +const getPageSpeedChecks = async (monitorId) => { + try { + const pageSpeedChecks = await PageSpeedCheck.find({ monitorId }); + return pageSpeedChecks; + } catch (error) { + throw error; + } +}; + +/** + * Delete all PageSpeed checks for a monitor + * @async + * @param {string} monitorId + * @returns {number} + * @throws {Error} + */ + +const deletePageSpeedChecks = async (monitorId) => { + try { + const result = await PageSpeedCheck.deleteMany({ monitorId }); + return result.deletedCount; + } catch (error) { + throw error; + } +}; + //**************************************** // Checks //**************************************** @@ -734,4 +795,7 @@ module.exports = { deleteAlert, deleteAlertByMonitorId, deleteMonitorsByUserId, + createPageSpeedCheck, + getPageSpeedChecks, + deletePageSpeedChecks, }; diff --git a/Server/models/PageSpeedCheck.js b/Server/models/PageSpeedCheck.js index cc8d6c931..4a3e6c046 100644 --- a/Server/models/PageSpeedCheck.js +++ b/Server/models/PageSpeedCheck.js @@ -45,3 +45,5 @@ const PageSpeedCheck = mongoose.Schema( */ module.exports = mongoose.model("PageSpeedCheck", PageSpeedCheck); + +