Files
Checkmate/Server/db/MongoDB.js
T

81 lines
1.7 KiB
JavaScript

const Monitor = require("../models/Monitor");
const mongoose = require("mongoose");
const seedDatabase = async () => {
const FAKE_MONITOR_DATA = [];
for (let i = 0; i < 10; i++) {
FAKE_MONITOR_DATA.push(
new Monitor({
userId: i % 2 === 0 ? 1 : 2,
name: `Monitor ${i}`,
description: `Description for Monitor ${i}`,
url: `https://monitor${i}.com`,
isActive: true,
interval: 60000,
updated_at: new Date(),
created_at: new Date(),
})
);
}
for (const monitor of FAKE_MONITOR_DATA) {
await monitor.save();
}
};
const connect = async () => {
try {
await mongoose.connect(process.env.DB_CONNECTION_STRING);
console.log("Connected to MongoDB");
const monitors = await Monitor.find();
if (monitors.length === 0) {
console.log("Seeding database with fake data");
await seedDatabase();
} else {
console.log("Database already seeded");
}
} catch (error) {
console.error("Failed to connect to MongoDB");
throw error;
}
};
// Gets all monitors
const getAllMonitors = async (req, res) => {
try {
const monitors = await Monitor.find();
return monitors;
} catch (error) {
throw error;
}
};
// Get a monitor by ID
const getMonitorById = async (req, res) => {
try {
const monitor = await Monitor.findById(req.params.monitorId);
return monitor;
} catch (error) {
throw error;
}
};
// Gets a monitor by user ID
const getMonitorsByUserId = async (req, res) => {
try {
const monitors = await Monitor.find({ userId: req.params.userId });
return monitors;
} catch (error) {
throw error;
}
};
module.exports = {
connect,
getAllMonitors,
getMonitorById,
getMonitorsByUserId,
};