Files
Checkmate/Server/db/mongo/utils/seedDb.js
T

57 lines
1.6 KiB
JavaScript
Raw Normal View History

2025-01-22 08:29:38 -08:00
import Monitor from "../../models/Monitor.js";
import Check from "../../models/Check.js";
2025-01-22 07:06:53 -08:00
const generateRandomUrl = () => {
const domains = ["example.com", "test.org", "demo.net", "sample.io", "mock.dev"];
const paths = ["api", "status", "health", "ping", "check"];
return `https://${domains[Math.floor(Math.random() * domains.length)]}/${paths[Math.floor(Math.random() * paths.length)]}`;
};
2025-01-22 11:07:32 -08:00
const generateChecks = (monitorId, teamId, count) => {
2025-01-22 07:06:53 -08:00
const checks = [];
const endTime = new Date(Date.now() - 10 * 60 * 1000); // 10 minutes ago
const startTime = new Date(endTime - count * 60 * 1000); // count minutes before endTime
for (let i = 0; i < count; i++) {
const timestamp = new Date(startTime.getTime() + i * 60 * 1000);
const status = Math.random() > 0.05; // 95% chance of being up
checks.push({
monitorId,
2025-01-22 11:07:32 -08:00
teamId,
2025-01-22 07:06:53 -08:00
status,
responseTime: Math.floor(Math.random() * 1000), // Random response time between 0-1000ms
createdAt: timestamp,
updatedAt: timestamp,
});
}
return checks;
};
2025-01-22 11:07:32 -08:00
const seedDb = async (userId, teamId) => {
2025-01-22 07:06:53 -08:00
try {
2025-01-22 08:29:38 -08:00
console.log("Deleting all monitors and checks");
2025-01-22 07:06:53 -08:00
await Monitor.deleteMany({});
await Check.deleteMany({});
2025-01-22 08:29:38 -08:00
console.log("Adding monitors");
for (let i = 0; i < 300; i++) {
const monitor = await Monitor.create({
name: `Monitor ${i}`,
url: generateRandomUrl(),
type: "http",
2025-01-22 11:07:32 -08:00
userId,
teamId,
2025-01-22 08:29:38 -08:00
interval: 60000,
2025-01-22 11:07:32 -08:00
active: false,
2025-01-22 08:29:38 -08:00
});
console.log(`Adding monitor and checks for monitor ${i}`);
2025-01-22 11:07:32 -08:00
const checks = generateChecks(monitor._id, teamId, 10000);
2025-01-22 08:29:38 -08:00
await Check.insertMany(checks);
}
2025-01-22 07:06:53 -08:00
} catch (error) {
console.error(error);
}
};
2025-01-22 08:29:38 -08:00
export default seedDb;