Merge pull request #47 from bluewave-labs/docs/monitor-controller

Added JSDocs for monitor controller, Updated readme, Added DB_TYPE en…
This commit is contained in:
Veysel
2024-05-21 13:19:41 -04:00
committed by GitHub
3 changed files with 49 additions and 14 deletions

View File

@@ -39,11 +39,13 @@ BlueWave uptime monitoring application
Configure the server with the following environmental variables
| ENV Varialbe Name | Required/Optional | Type | Description |
| -------------------- | ----------------- | ------ | ---------------------------------------------------- |
| DB_CONNECTION_STRING | Required | string | Specfies URL for MongoDB Database |
| MAILERSEND_API_KEY | Required | string | Specfies API KEY for MailerSend service |
| SYSTEM_EMAIL_ADDRESS | Required | string | Specfies System email to be used in emailing service |
| ENV Varialbe Name | Required/Optional | Type | Description | Accepted Values |
| -------------------- | ----------------- | ------- | ---------------------------------------------------- | ------------------- |
| DB_TYPE | Optional | string | Specify DB to use | `MongoDB \| FakeDB` |
| DB_CONNECTION_STRING | Required | string | Specfies URL for MongoDB Database | |
| PORT | Optional | Integer | Specifies Port for Server | |
| MAILERSEND_API_KEY | Required | string | Specfies API KEY for MailerSend service | |
| SYSTEM_EMAIL_ADDRESS | Required | string | Specfies System email to be used in emailing service | |
---

View File

@@ -2,20 +2,34 @@ const {
getMonitorsByIdValidation,
getMonitorsByUserIdValidation,
} = require("../validation/joi");
const logger = require('../utils/logger')
const logger = require("../utils/logger");
// Gets all monitors
/**
* Returns all monitors
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @returns {Promise<Express.Response>}
* @throws {Error}
*/
const getAllMonitors = async (req, res) => {
try {
const monitors = await req.db.getAllMonitors();
return res.json({ success: true, msg: "Monitors found", data: monitors });
} catch (error) {
logger.error(error.message, { "service": "monitor" });
logger.error(error.message, { service: "monitor" });
return res.status(500).json({ success: false, msg: error.message });
}
};
// Get a monitor by ID
/**
* Returns monitor with matching ID
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @returns {Promise<Express.Response>}
* @throws {Error}
*/
const getMonitorById = async (req, res) => {
const { error } = getMonitorsByIdValidation.validate(req.params);
if (error) {
@@ -29,12 +43,19 @@ const getMonitorById = async (req, res) => {
const monitor = await req.db.getMonitorById(monitorId);
return res.json({ success: true, msg: "Monitor found", data: monitor });
} catch (error) {
logger.error(error.message, { "service": "monitor" });
logger.error(error.message, { service: "monitor" });
return res.status(500).json({ success: false, msg: error.message });
}
};
// Gets a monitor by user ID
/**
* Returns all monitors belong to User with UserID
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @returns {Promise<Express.Response>}
* @throws {Error}
*/
const getMonitorsByUserId = async (req, res) => {
const { error } = getMonitorsByUserIdValidation.validate(req.params);
if (error) {
@@ -46,14 +67,17 @@ const getMonitorsByUserId = async (req, res) => {
try {
const userId = req.params.userId;
const monitors = await req.db.getMonitorsByUserId(userId);
logger.info(`Monitors for user ${userId} found`, { "service": "monitor", "userId":userId });
logger.info(`Monitors for user ${userId} found`, {
service: "monitor",
userId: userId,
});
return res.json({
success: true,
msg: `Monitors for user ${userId} found`,
data: monitors,
});
} catch (error) {
logger.error(error.message, { "service": "monitor" });
logger.error(error.message, { service: "monitor" });
return res.status(500).json({ success: false, msg: error.message });
}
};

View File

@@ -17,10 +17,19 @@ const logger = require("./utils/logger");
// const db = require("./db/FakeDb");
//
// MongoDB
const db = require("./db/MongoDB");
// const db = require("./db/MongoDB");
//
// **************************
const DB_TYPE = {
MongoDB: () => require("./db/MongoDB"),
FakedDB: () => require("./db/FakeDb"),
};
const db = DB_TYPE[process.env.DB_TYPE]
? DB_TYPE[process.env.DB_TYPE]()
: require("./db/FakeDb");
/**
* NOTES
* Email Service will be added