Added monitor router, controller, and model

This commit is contained in:
Alex Holliday committed 2024-05-10 13:36:04 -07:00
1 parent 0abda6fd21
commit def8ba4b9d
5 files changed
+96 -26

No files matched your search

+19
View File
@@ -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 };
+25 -21
View File
@@ -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);
+37
View File
@@ -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);
+8
View File
@@ -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;
+7 -5
View File
@@ -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}
module.exports = { authValidation, getMonitorsByIdValidation };