Add endpoints and route for all user checks

This commit is contained in:
Alex Holliday
2024-08-08 14:27:01 -07:00
parent 5c91e98daf
commit b28e4df546
4 changed files with 58 additions and 2 deletions

View File

@@ -60,6 +60,20 @@ const getChecks = async (req, res, next) => {
}
};
const getUserChecks = async (req, res, next) => {
try {
const checks = req.db.getUserChecks(req);
return res.status(200).json({
success: true,
msg: successMessages.CHECK_GET,
data: { checksCount, checks },
});
} catch (error) {
error.service = SERVICE_NAME;
next(error);
}
};
const deleteChecks = async (req, res, next) => {
try {
await deleteChecksParamValidation.validateAsync(req.params);
@@ -88,5 +102,6 @@ const deleteChecks = async (req, res, next) => {
module.exports = {
createCheck,
getChecks,
getUserChecks,
deleteChecks,
};

View File

@@ -90,6 +90,7 @@ const {
createCheck,
getChecksCount,
getChecks,
getUserChecks,
deleteChecks,
} = require("./modules/checkModule");
@@ -148,6 +149,7 @@ module.exports = {
createCheck,
getChecksCount,
getChecks,
getUserChecks,
deleteChecks,
createAlert,
getAlertsByUserId,

View File

@@ -1,4 +1,6 @@
const Check = require("../../../models/Check");
const Monitor = require("../../../models/Monitor");
const mongoose = require("mongoose");
const filterLookup = {
day: new Date(new Date().setDate(new Date().getDate() - 1)),
week: new Date(new Date().setDate(new Date().getDate() - 7)),
@@ -92,6 +94,35 @@ const getChecks = async (req) => {
* @throws {Error}
*/
const getUserChecks = async (req) => {
const { userId } = req.params;
try {
const objectId = mongoose.Types.ObjectId.createFromHexString(userId);
const checks = await Check.aggregate([
{
$lookup: {
from: "monitors", // The name of the Monitor collection
localField: "monitorId",
foreignField: "_id",
as: "monitorDetails",
},
},
{
$unwind: "$monitorDetails",
},
{
$match: {
"monitorDetails.userId": objectId,
},
},
]);
return checks;
} catch (error) {
throw error;
}
};
const deleteChecks = async (monitorId) => {
try {
const result = await Check.deleteMany({ monitorId });
@@ -100,4 +131,10 @@ const deleteChecks = async (monitorId) => {
throw error;
}
};
module.exports = { createCheck, getChecksCount, getChecks, deleteChecks };
module.exports = {
createCheck,
getChecksCount,
getChecks,
getUserChecks,
deleteChecks,
};

View File

@@ -21,4 +21,6 @@ router.post(
checkController.deleteChecks
);
module.exports = router;
router.get("/user/:userId", checkController.getUserChecks);
module.exports = router;