mirror of
https://github.com/bluewave-labs/Checkmate.git
synced 2026-01-20 08:39:43 -06:00
232 lines
5.3 KiB
JavaScript
232 lines
5.3 KiB
JavaScript
import mongoose from "mongoose";
|
|
import UserModel from "../models/User.js";
|
|
import AppSettings from "../models/AppSettings.js";
|
|
import logger from "../../utils/logger.js";
|
|
const SERVICE_NAME = "MongoDB";
|
|
|
|
//****************************************
|
|
// DB Connection
|
|
//****************************************
|
|
|
|
const connect = async () => {
|
|
try {
|
|
const connectionString =
|
|
process.env.DB_CONNECTION_STRING || "mongodb://localhost:27017/uptime_db";
|
|
await mongoose.connect(connectionString);
|
|
// If there are no AppSettings, create one
|
|
let appSettings = await AppSettings.find();
|
|
if (appSettings.length === 0) {
|
|
appSettings = new AppSettings({});
|
|
await appSettings.save();
|
|
}
|
|
logger.info({ message: "Connected to MongoDB" });
|
|
} catch (error) {
|
|
logger.error({
|
|
message: error.message,
|
|
service: SERVICE_NAME,
|
|
method: "connect",
|
|
stack: error.stack,
|
|
});
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
const disconnect = async () => {
|
|
try {
|
|
logger.info({ message: "Disconnecting from MongoDB" });
|
|
await mongoose.disconnect();
|
|
logger.info({ message: "Disconnected from MongoDB" });
|
|
return;
|
|
} catch (error) {
|
|
logger.error({
|
|
message: error.message,
|
|
service: SERVICE_NAME,
|
|
method: "disconnect",
|
|
stack: error.stack,
|
|
});
|
|
}
|
|
};
|
|
|
|
const checkSuperadmin = async (req, res) => {
|
|
try {
|
|
const superAdmin = await UserModel.findOne({ role: "superadmin" });
|
|
if (superAdmin !== null) {
|
|
return true;
|
|
}
|
|
return false;
|
|
} catch (error) {
|
|
throw error;
|
|
}
|
|
};
|
|
|
|
//****************************************
|
|
// User Operations
|
|
//****************************************
|
|
|
|
import {
|
|
insertUser,
|
|
getUserByEmail,
|
|
updateUser,
|
|
deleteUser,
|
|
deleteTeam,
|
|
deleteAllOtherUsers,
|
|
getAllUsers,
|
|
logoutUser,
|
|
} from "./modules/userModule.js";
|
|
|
|
//****************************************
|
|
// Invite Token Operations
|
|
//****************************************
|
|
|
|
import {
|
|
requestInviteToken,
|
|
getInviteToken,
|
|
getInviteTokenAndDelete,
|
|
} from "./modules/inviteModule.js";
|
|
|
|
//****************************************
|
|
// Recovery Operations
|
|
//****************************************
|
|
import {
|
|
requestRecoveryToken,
|
|
validateRecoveryToken,
|
|
resetPassword,
|
|
} from "./modules/recoveryModule.js";
|
|
|
|
//****************************************
|
|
// Monitors
|
|
//****************************************
|
|
|
|
import {
|
|
getAllMonitors,
|
|
getAllMonitorsWithUptimeStats,
|
|
getMonitorStatsById,
|
|
getMonitorById,
|
|
getMonitorsAndSummaryByTeamId,
|
|
getMonitorsByTeamId,
|
|
createMonitor,
|
|
deleteMonitor,
|
|
deleteAllMonitors,
|
|
deleteMonitorsByUserId,
|
|
editMonitor,
|
|
addDemoMonitors,
|
|
} from "./modules/monitorModule.js";
|
|
|
|
//****************************************
|
|
// Page Speed Checks
|
|
//****************************************
|
|
|
|
import {
|
|
createPageSpeedCheck,
|
|
deletePageSpeedChecksByMonitorId,
|
|
} from "./modules/pageSpeedCheckModule.js";
|
|
|
|
//****************************************
|
|
// Hardware Checks
|
|
//****************************************
|
|
import { createHardwareCheck } from "./modules/hardwareCheckModule.js";
|
|
|
|
//****************************************
|
|
// Checks
|
|
//****************************************
|
|
|
|
import {
|
|
createCheck,
|
|
getChecksCount,
|
|
getChecks,
|
|
getTeamChecks,
|
|
deleteChecks,
|
|
deleteChecksByTeamId,
|
|
updateChecksTTL,
|
|
} from "./modules/checkModule.js";
|
|
|
|
//****************************************
|
|
// Maintenance Window
|
|
//****************************************
|
|
import {
|
|
createMaintenanceWindow,
|
|
getMaintenanceWindowById,
|
|
getMaintenanceWindowsByTeamId,
|
|
getMaintenanceWindowsByMonitorId,
|
|
deleteMaintenanceWindowById,
|
|
deleteMaintenanceWindowByMonitorId,
|
|
deleteMaintenanceWindowByUserId,
|
|
editMaintenanceWindowById,
|
|
} from "./modules/maintenanceWindowModule.js";
|
|
|
|
//****************************************
|
|
// Notifications
|
|
//****************************************
|
|
import {
|
|
createNotification,
|
|
getNotificationsByMonitorId,
|
|
deleteNotificationsByMonitorId,
|
|
} from "./modules/notificationModule.js";
|
|
|
|
//****************************************
|
|
// AppSettings
|
|
//****************************************
|
|
import { getAppSettings, updateAppSettings } from "./modules/settingsModule.js";
|
|
|
|
//****************************************
|
|
// Status Page
|
|
//****************************************
|
|
import { createStatusPage, getStatusPageByUrl } from "./modules/statusPageModule.js";
|
|
|
|
export default {
|
|
connect,
|
|
disconnect,
|
|
insertUser,
|
|
getUserByEmail,
|
|
updateUser,
|
|
deleteUser,
|
|
deleteTeam,
|
|
deleteAllOtherUsers,
|
|
getAllUsers,
|
|
logoutUser,
|
|
requestInviteToken,
|
|
getInviteToken,
|
|
getInviteTokenAndDelete,
|
|
requestRecoveryToken,
|
|
validateRecoveryToken,
|
|
resetPassword,
|
|
checkSuperadmin,
|
|
getAllMonitors,
|
|
getAllMonitorsWithUptimeStats,
|
|
getMonitorStatsById,
|
|
getMonitorById,
|
|
getMonitorsAndSummaryByTeamId,
|
|
getMonitorsByTeamId,
|
|
createMonitor,
|
|
deleteMonitor,
|
|
deleteAllMonitors,
|
|
editMonitor,
|
|
addDemoMonitors,
|
|
createCheck,
|
|
getChecksCount,
|
|
getChecks,
|
|
getTeamChecks,
|
|
deleteChecks,
|
|
deleteChecksByTeamId,
|
|
updateChecksTTL,
|
|
deleteMonitorsByUserId,
|
|
createPageSpeedCheck,
|
|
deletePageSpeedChecksByMonitorId,
|
|
createHardwareCheck,
|
|
createMaintenanceWindow,
|
|
getMaintenanceWindowsByTeamId,
|
|
getMaintenanceWindowById,
|
|
getMaintenanceWindowsByMonitorId,
|
|
deleteMaintenanceWindowById,
|
|
deleteMaintenanceWindowByMonitorId,
|
|
deleteMaintenanceWindowByUserId,
|
|
editMaintenanceWindowById,
|
|
createNotification,
|
|
getNotificationsByMonitorId,
|
|
deleteNotificationsByMonitorId,
|
|
getAppSettings,
|
|
updateAppSettings,
|
|
createStatusPage,
|
|
getStatusPageByUrl,
|
|
};
|