Merge branch 'bluewave-labs:master' into new-password-confirmed

This commit is contained in:
Mohammad Khalilzadeh authored and GitHub committed 2024-06-01 08:32:04 +03:30
commit 64cd5cabca
4 files changed
+261 -87

No files matched your search

+2 -2
View File
@@ -46,8 +46,8 @@ function NavBar() {
};
return (
<AppBar position="static">
<Container maxWidth="xl">
<AppBar position="fixed" sx={{ width: '100%' }}>
<Container maxWidth="xxl" sx={{ width: '100%' }}>
<Toolbar disableGutters>
<Typography
variant="h6"
+142 -18
View File
@@ -823,6 +823,24 @@ curl --request POST \
###### Body
"checkId": "66577a3fd16dcf7c1ce35148",
"monitorId": "6657789ebf6766ee8e2d2edb",
"userId": "6654d1a2634754f789e1f115",
"status": false,
"message": "This is a test alert",
"notifiedStatus": "false",
"acknowledgeStatus": false
> | Name | Type | Notes |
> | ----------------- | --------- | --------------------------------------- |
> | checkId | `string` | Id of `Check` associated with `Alert` |
> | monitorId | `string` | Id of `Monitor` associated with `Alert` |
> | userId | `string` | Id of `User` associated with `Alert` |
> | status | `boolean` | Status of `Alert` |
> | message | `string` | `Alert` message |
> | notifiedStatus | `boolean` | |
> | acknowledgeStatus | `boolean` | |
##### Sample CURL request
```
@@ -855,13 +873,33 @@ curl --request POST \
##### Sample CURL request
```
curl --request GET \
--url http://localhost:5000/api/v1/alerts/user/6654d1a2634754f789e1f115 \
--header 'Authorization: <bearer_token>'
```
###### Sample Response
```json
{
"success": true,
"msg": "Got alerts",
"data": [
{
"_id": "6657813d809adfded891a6b7",
"checkId": "66577a3fd16dcf7c1ce35148",
"monitorId": "6657789ebf6766ee8e2d2edb",
"userId": "6654d1a2634754f789e1f115",
"status": false,
"message": "This is a test alert",
"notifiedStatus": false,
"acknowledgeStatus": false,
"createdAt": "2024-05-29T19:25:49.317Z",
"updatedAt": "2024-05-29T19:25:49.317Z",
"__v": 0
}
]
}
```
</details>
@@ -883,13 +921,33 @@ curl --request POST \
##### Sample CURL request
```
curl --request GET \
--url http://localhost:5000/api/v1/alerts/monitor/6657789ebf6766ee8e2d2edb \
--header 'Authorization: <bearer_token>' \
```
###### Sample Response
```json
{
"success": true,
"msg": "Got alerts by Monitor",
"data": [
{
"_id": "6657813d809adfded891a6b7",
"checkId": "66577a3fd16dcf7c1ce35148",
"monitorId": "6657789ebf6766ee8e2d2edb",
"userId": "6654d1a2634754f789e1f115",
"status": false,
"message": "This is a test alert",
"notifiedStatus": false,
"acknowledgeStatus": false,
"createdAt": "2024-05-29T19:25:49.317Z",
"updatedAt": "2024-05-29T19:25:49.317Z",
"__v": 0
}
]
}
```
</details>
@@ -912,13 +970,31 @@ curl --request POST \
##### Sample CURL request
```
curl --request GET \
--url http://localhost:5000/api/v1/alerts/66577ddae5ff3c91437d0887 \
--header 'Authorization: <bearer_token>' \
```
###### Sample Response
```json
{
"success": true,
"msg": "Got Alert By alertID",
"data": {
"_id": "66577ddae5ff3c91437d0887",
"checkId": "66577a3fd16dcf7c1ce35148",
"monitorId": "6657789ebf6766ee8e2d2edb",
"userId": "6654d1a2634754f789e1f115",
"status": false,
"message": "This is a test alert",
"notifiedStatus": false,
"acknowledgeStatus": false,
"createdAt": "2024-05-29T19:11:22.205Z",
"updatedAt": "2024-05-29T19:11:22.205Z",
"__v": 0
}
}
```
</details>
@@ -934,22 +1010,54 @@ curl --request POST \
###### Response Payload
> | Type | Notes |
> | ------- | -------------------- |
> | `Alert` | Returns edited alert |
> | Type | Notes |
> | ------- | ---------------------- |
> | `Alert` | Returns edited `Alert` |
###### Body
> | Name | Type | Notes |
> | ----------------- | --------- | ------------------------------------------ |
> | checkId | `string` | ID of `Check` associated with `Alert` |
> | monitorId | `string` | ID of `Monitor` id associated with `Alert` |
> | userId | `string` | ID of `User` associated with `Alert` |
> | status | `boolean` | Alert status |
> | message | `string` | Alert message |
> | notifiedStatus | `boolean` | |
> | acknowledgeStatus | `boolean` | |
##### Sample CURL request
```
curl --request POST \
--url http://localhost:5000/api/v1/alerts/edit/66577ddae5ff3c91437d0887 \
--header 'Authorization: <bearer_token>' \
--header 'Content-Type: application/json' \
--data '{
"acknowledgeStatus": true
}'
```
###### Sample Response
```json
{
"success": true,
"msg": "Edited alert",
"data": {
"_id": "66577ddae5ff3c91437d0887",
"checkId": "66577a3fd16dcf7c1ce35148",
"monitorId": "6657789ebf6766ee8e2d2edb",
"userId": "6654d1a2634754f789e1f115",
"status": false,
"message": "This is a test alert",
"notifiedStatus": false,
"acknowledgeStatus": true,
"createdAt": "2024-05-29T19:11:22.205Z",
"updatedAt": "2024-05-29T19:12:23.951Z",
"__v": 0
}
}
```
</details>
@@ -964,22 +1072,38 @@ curl --request POST \
###### Response Payload
> | Type | Notes |
> | ---- | ------------------- |
> | None | No payload returned |
###### Body
> | Type | Notes |
> | ------- | --------------------------- |
> | `Alert` | Returns the deleted `Alert` |
##### Sample CURL request
```
curl --request POST \
--url http://localhost:5000/api/v1/alerts/delete/66577ddae5ff3c91437d0887 \
--header 'Authorization: <bearer_token>' \
```
###### Sample Response
```json
{
"success": true,
"msg": "Deleted alert",
"data": {
"_id": "66577ddae5ff3c91437d0887",
"checkId": "66577a3fd16dcf7c1ce35148",
"monitorId": "6657789ebf6766ee8e2d2edb",
"userId": "6654d1a2634754f789e1f115",
"status": false,
"message": "This is a test alert",
"notifiedStatus": false,
"acknowledgeStatus": true,
"createdAt": "2024-05-29T19:11:22.205Z",
"updatedAt": "2024-05-29T19:12:23.951Z",
"__v": 0
}
}
```
</details>
+65 -19
View File
@@ -11,6 +11,7 @@ const {
editAlertBodyValidation,
deleteAlertParamValidation,
} = require("../validation/joi");
const { get } = require("mongoose");
const SERVICE_NAME = "alerts";
@@ -35,7 +36,11 @@ const createAlert = async (req, res, next) => {
}
try {
req.db.createAlert(req, res);
const alertData = { ...req.body };
const alert = await req.db.createAlert(alertData);
return res
.status(200)
.json({ success: true, msg: "Alert created", data: alert });
} catch (error) {
error.service = SERVICE_NAME;
next(error);
@@ -62,7 +67,10 @@ const getAlertsByUserId = async (req, res, next) => {
}
try {
req.db.getAlertsByUserId(req, res);
const alerts = await req.db.getAlertsByUserId(req.params.userId);
return res
.status(200)
.json({ success: true, msg: "Got alerts", data: alerts });
} catch (error) {
error.service = SERVICE_NAME;
next(error);
@@ -72,29 +80,30 @@ const getAlertsByUserId = async (req, res, next) => {
const getAlertsByMonitorId = async (req, res, next) => {
try {
await getAlertsByMonitorIdParamValidation.validateAsync(req.params);
res.status(200).json({
success: true,
msg: "Get Alerts By MonitorID",
data: req.params.monitorId,
});
} catch (error) {
error.status = 422;
res.status(200).json({ success: true, msg: "Edit alert" });
error.message = error.details[0].message;
error.service = SERVICE_NAME;
next(error);
return;
}
try {
const alerts = await req.db.getAlertsByMonitorId(req.params.monitorId);
return res.status(200).json({
success: true,
msg: "Got alerts by Monitor",
data: alerts,
});
} catch (error) {
error.service = SERVICE_NAME;
next(error);
}
};
const getAlertById = async (req, res, next) => {
try {
await getAlertByIdParamValidation.validateAsync(req.params);
res.status(200).json({
success: true,
msg: "Get Alert By alertID",
data: req.params.alertId,
});
} catch (error) {
error.status = 422;
error.message = error.details[0].message;
@@ -102,24 +111,49 @@ const getAlertById = async (req, res, next) => {
next(error);
return;
}
try {
const alert = await req.db.getAlertById(req.params.alertId);
return res.status(200).json({
success: true,
msg: "Got Alert By alertID",
data: alert,
});
} catch (error) {
error.service = SERVICE_NAME;
next(error);
}
};
const editAlert = async (req, res, next) => {
try {
await editAlertParamValidation(req.params);
await editAlertBodyValidation(req.body);
res.status(200).json({ success: true, msg: "Edit alert" });
await editAlertParamValidation.validateAsync(req.params);
await editAlertBodyValidation.validateAsync(req.body);
} catch (error) {
console.log(error);
error.status = 422;
error.message = error.details[0].message;
error.service = SERVICE_NAME;
next(error);
return;
}
try {
const alertData = { ...req.body };
const alert = await req.db.editAlert(req.params.alertId, alertData);
return res.status(200).json({
success: true,
msg: "Edited alert",
data: alert,
});
} catch (error) {
error.service = SERVICE_NAME;
next(error);
}
};
const deleteAlert = async (req, res, next) => {
try {
await deleteAlertParamValidation(req.params);
res.status(200).json({ success: true, msg: "Delete alert" });
await deleteAlertParamValidation.validateAsync(req.params);
} catch (error) {
error.status = 422;
error.message = error.details[0].message;
@@ -127,6 +161,18 @@ const deleteAlert = async (req, res, next) => {
next(error);
return;
}
try {
const deleted = await req.db.deleteAlert(req.params.alertId);
return res.status(200).json({
success: true,
msg: "Deleted alert",
data: deleted,
});
} catch (error) {
error.service = SERVICE_NAME;
next(error);
}
};
module.exports = {
+52 -48
View File
@@ -2,6 +2,7 @@ const Monitor = require("../models/Monitor");
const mongoose = require("mongoose");
const UserModel = require("../models/user");
const Check = require("../models/Check");
const Alert = require("../models/Alert");
const verifyId = (userId, monitorId) => {
return userId.toString() === monitorId.toString();
@@ -60,10 +61,6 @@ const getUserByEmail = async (req, res) => {
}
};
//****************************************
// Monitors
//****************************************
/**
* Update a user by ID
* @async
@@ -89,6 +86,10 @@ const updateUser = async (req, res) => {
}
};
//****************************************
// Monitors
//****************************************
/**
* Get all monitors
* @async
@@ -222,6 +223,7 @@ const editMonitor = async (req, res) => {
const createCheck = async (checkData) => {
try {
console.log(checkData);
const check = await new Check({ ...checkData }).save();
return check;
} catch (error) {
@@ -274,16 +276,21 @@ const deleteChecks = async (monitorId) => {
/**
* Creates an Alert associated with a Monitor and User
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @param {Object} alertData
* @param {string} alertData.checkId
* @param {string} alert.monitorId
* @param {string} alert.userId
* @param {boolean} alert.status
* @param {string} alert.message
* @param {boolean} alert.notifiedStatus
* @param {boolean} alert.acknowledgeStatus
* @returns {<Promise<Alert>>}
* @throws {Error}
*/
const createAlert = async (req, res) => {
const createAlert = async (alertData) => {
try {
res
.status(200)
.json({ success: true, msg: "Create Alert", data: req.params.monitorId });
const alert = await new Alert({ ...alertData }).save();
return alert;
} catch (error) {
throw error;
}
@@ -292,18 +299,14 @@ const createAlert = async (req, res) => {
/**
* Gets all alerts a User has set
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @param {string} userId
* @returns {<Promise<Array<Alert>>}
* @throws {Error}
*/
const getAlertsByUserId = async (req, res) => {
const getAlertsByUserId = async (userId) => {
try {
res.status(200).json({
success: true,
msg: "Get Alerts By UserID",
data: req.params.userId,
});
const alerts = await Alert.find({ userId });
return alerts;
} catch (error) {
throw error;
}
@@ -312,73 +315,74 @@ const getAlertsByUserId = async (req, res) => {
/**
* Gets all alerts a for an associated Monitor
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @param {string} monitorId
* @returns {<Promise<Array<Alert>>}
* @throws {Error}
*/
const getAlertsByMonitorId = async (req, res) => {
const getAlertsByMonitorId = async (monitorId) => {
try {
res.status(200).json({
success: true,
msg: "Get Alerts By MonitorID",
data: req.params.monitorId,
});
const alerts = await Alert.find({ monitorId });
return alerts;
} catch (error) {
throw error;
}
};
/**
* Gets an alert with specified ID
* Returns an alert with specified ID
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @param {string} alertId
* @returns {Promise<Alert>}
* @throws {Error}
*/
const getAlertById = async (req, res) => {
const getAlertById = async (alertId) => {
try {
res.status(200).json({
success: true,
msg: "Get Alert By alertID",
data: req.params.alertId,
});
const alert = await Alert.findById(alertId);
return alert;
} catch (error) {
throw error;
}
};
/**
* Returns an edited monitor with the specified ID
* Returns an edited alert with the specified ID
* @async
* @param {Express.Request} req
* @param {string} alertId
* @param {Object} alertData
* @param {string} alertData.checkId
* @param {string} alertData.monitorId
* @param {string} alertData.userId
* @param {boolean} alertData.status
* @param {string} alertData.message
* @param {boolean} alertData.notifiedStatus
* @param {boolean} alertData.acknowledgeStatus
* @param {Express.Response} res
* @returns {Promise<Alert>>}
* @throws {Error}
*/
const editAlert = async (req, res) => {
const editAlert = async (alertId, alertData) => {
try {
res
.status(200)
.json({ success: true, msg: "Edit alert", data: req.params.alertId });
const editedAlert = await Alert.findByIdAndUpdate(alertId, alertData, {
new: true,
});
return editedAlert;
} catch (error) {
throw error;
}
};
/**
* Deletes a monitor with the specified ID
* Deletes an alert with the specified ID
* @async
* @param {Express.Request} req
* @param {Express.Response} res
* @param {string} alertId
* @throws {Error}
*/
const deleteAlert = async (req, res) => {
const deleteAlert = async (alertId) => {
try {
res
.status(200)
.json({ success: true, msg: "Delete alert", data: req.params.alertId });
const result = await Alert.findByIdAndDelete(alertId);
if (result) {
return result;
} else throw new Error(`Alert with id ${alertId} not found`);
} catch (error) {
throw error;
}