From def8ba4b9df81f6dd6854491e5b0ff14a1e5d40a Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 10 May 2024 13:36:04 -0700 Subject: [PATCH] Added monitor router, controller, and model --- Server/controllers/monitorController.js | 19 ++++++++++ Server/index.js | 46 ++++++++++++++----------- Server/models/monitor.js | 37 ++++++++++++++++++++ Server/routes/monitorRoute.js | 8 +++++ Server/validation/joi.js | 12 ++++--- 5 files changed, 96 insertions(+), 26 deletions(-) create mode 100644 Server/controllers/monitorController.js create mode 100644 Server/models/monitor.js create mode 100644 Server/routes/monitorRoute.js diff --git a/Server/controllers/monitorController.js b/Server/controllers/monitorController.js new file mode 100644 index 000000000..1044d3f48 --- /dev/null +++ b/Server/controllers/monitorController.js @@ -0,0 +1,19 @@ +const { getMonitorsByIdValidation } = require("../validation/joi"); + +const getAllMonitors = async (req, res) => { + res.json({ message: "Hello from Monitor Controller" }); +}; + +const getMonitorById = async (req, res) => { + const { error } = getMonitorsByIdValidation.validate(req.params); + if (error) { + return res + .status(400) + .json({ success: false, msg: error.details[0].message }); + } + + const monitorId = req.params.monitorId; + return res.json({ success: true, msg: "Monitor found", data: { monitorId } }); +}; + +module.exports = { getAllMonitors, getMonitorById }; diff --git a/Server/index.js b/Server/index.js index 173c2c78d..3913d1a58 100644 --- a/Server/index.js +++ b/Server/index.js @@ -1,28 +1,32 @@ -const express = require('express') -const helmet = require('helmet') -const cors = require('cors') -const authRouter = require('./routes/authRoute') -const { connectDbAndRunServer } = require('./configs/db') -require('dotenv').config() +const express = require("express"); +const helmet = require("helmet"); +const cors = require("cors"); +const authRouter = require("./routes/authRoute"); +const monitorRouter = require("./routes/monitorRoute"); +const { connectDbAndRunServer } = require("./configs/db"); +require("dotenv").config(); // const { sendEmail } = require('./utils/sendEmail') /** * NOTES - * Email Service will be added + * Email Service will be added * Logger Service will be added (Winston or similar) */ -const app = express() +const app = express(); // middlewares -app.use(cors( - //We will add configuration later -)) -app.use(express.json()) -app.use(helmet()) +app.use( + cors() + //We will add configuration later +); +app.use(express.json()); +app.use(helmet()); //routes -app.use('/api/v1/auth', authRouter); +app.use("/api/v1/auth", authRouter); + +app.use("/api/v1/monitors", monitorRouter); // Testing email service // app.use('/sendEmail', async (req, res) => { @@ -31,12 +35,12 @@ app.use('/api/v1/auth', authRouter); // }) //health check -app.use('/api/v1/healthy', (req, res) => { - try { - return res.status(200).json({message:"Healthy"}) - } catch (error) { - return res.status(500).json({message:error.message}) - } -}) +app.use("/api/v1/healthy", (req, res) => { + try { + return res.status(200).json({ message: "Healthy" }); + } catch (error) { + return res.status(500).json({ message: error.message }); + } +}); connectDbAndRunServer(app); diff --git a/Server/models/monitor.js b/Server/models/monitor.js new file mode 100644 index 000000000..513d4e2be --- /dev/null +++ b/Server/models/monitor.js @@ -0,0 +1,37 @@ +const mongoose = require("mongoose"); + +const MonitorSchema = mongoose.Schema({ + userId: { + type: String, + }, + name: { + type: String, + required: true, + }, + description: { + type: String, + }, + url: { + type: String, + required: true, + }, + isActive: { + type: Boolean, + default: true, + }, + interval: { + // in milliseconds + type: Number, + default: 60000, + }, + updated_at: { + type: Date, + default: Date.now, + }, + created_at: { + type: Date, + default: Date.now, + }, +}); + +module.exports = mongoose.model("Monitor", MonitorSchema); diff --git a/Server/routes/monitorRoute.js b/Server/routes/monitorRoute.js new file mode 100644 index 000000000..724ee79b6 --- /dev/null +++ b/Server/routes/monitorRoute.js @@ -0,0 +1,8 @@ +const router = require("express").Router(); +const monitorController = require("../controllers/monitorController"); +const { getMonitorsByIdValidation } = require("../validation/joi"); + +router.get("/", monitorController.getAllMonitors); +router.get("/:monitorId", monitorController.getMonitorById); + +module.exports = router; diff --git a/Server/validation/joi.js b/Server/validation/joi.js index d28f9b7da..c5b2b58d1 100644 --- a/Server/validation/joi.js +++ b/Server/validation/joi.js @@ -1,10 +1,12 @@ -const joi = require('joi') - +const joi = require("joi"); const authValidation = joi.object({ - email: joi.string().email().required(), - password: joi.string().min(8).required(), + email: joi.string().email().required(), + password: joi.string().min(8).required(), }); +const getMonitorsByIdValidation = joi.object({ + monitorId: joi.string().required(), +}); -module.exports = {authValidation} \ No newline at end of file +module.exports = { authValidation, getMonitorsByIdValidation };