diff --git a/Server/db/mongo/MongoDB.js b/Server/db/mongo/MongoDB.js index 3bdde7d69..882c862e0 100644 --- a/Server/db/mongo/MongoDB.js +++ b/Server/db/mongo/MongoDB.js @@ -2,234 +2,129 @@ 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"; +import * as userModule from "./modules/userModule.js"; //**************************************** // Invite Token Operations //**************************************** -import { - requestInviteToken, - getInviteToken, - getInviteTokenAndDelete, -} from "./modules/inviteModule.js"; +import * as inviteModule from "./modules/inviteModule.js"; //**************************************** // Recovery Operations //**************************************** -import { - requestRecoveryToken, - validateRecoveryToken, - resetPassword, -} from "./modules/recoveryModule.js"; +import * as recoveryModule from "./modules/recoveryModule.js"; //**************************************** // Monitors //**************************************** -import { - getAllMonitors, - getAllMonitorsWithUptimeStats, - getMonitorStatsById, - getMonitorById, - getMonitorsAndSummaryByTeamId, - getMonitorsByTeamId, - createMonitor, - deleteMonitor, - deleteAllMonitors, - deleteMonitorsByUserId, - editMonitor, - addDemoMonitors, -} from "./modules/monitorModule.js"; +import * as monitorModule from "./modules/monitorModule.js"; //**************************************** // Page Speed Checks //**************************************** -import { - createPageSpeedCheck, - deletePageSpeedChecksByMonitorId, -} from "./modules/pageSpeedCheckModule.js"; +import * as pageSpeedCheckModule from "./modules/pageSpeedCheckModule.js"; //**************************************** // Hardware Checks //**************************************** -import { - createHardwareCheck, - deleteHardwareChecksByMonitorId, -} from "./modules/hardwareCheckModule.js"; +import * as hardwareCheckModule from "./modules/hardwareCheckModule.js"; //**************************************** // Checks //**************************************** -import { - createCheck, - getChecksCount, - getChecks, - getTeamChecks, - deleteChecks, - deleteChecksByTeamId, - updateChecksTTL, -} from "./modules/checkModule.js"; +import * as checkModule from "./modules/checkModule.js"; //**************************************** // Maintenance Window //**************************************** -import { - createMaintenanceWindow, - getMaintenanceWindowById, - getMaintenanceWindowsByTeamId, - getMaintenanceWindowsByMonitorId, - deleteMaintenanceWindowById, - deleteMaintenanceWindowByMonitorId, - deleteMaintenanceWindowByUserId, - editMaintenanceWindowById, -} from "./modules/maintenanceWindowModule.js"; +import * as maintenanceWindowModule from "./modules/maintenanceWindowModule.js"; //**************************************** // Notifications //**************************************** -import { - createNotification, - getNotificationsByMonitorId, - deleteNotificationsByMonitorId, -} from "./modules/notificationModule.js"; +import * as notificationModule from "./modules/notificationModule.js"; //**************************************** // AppSettings //**************************************** -import { getAppSettings, updateAppSettings } from "./modules/settingsModule.js"; +import * as settingsModule from "./modules/settingsModule.js"; //**************************************** // Status Page //**************************************** -import { createStatusPage, getStatusPageByUrl } from "./modules/statusPageModule.js"; +import * as statusPageModule 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, - deleteHardwareChecksByMonitorId, - createMaintenanceWindow, - getMaintenanceWindowsByTeamId, - getMaintenanceWindowById, - getMaintenanceWindowsByMonitorId, - deleteMaintenanceWindowById, - deleteMaintenanceWindowByMonitorId, - deleteMaintenanceWindowByUserId, - editMaintenanceWindowById, - createNotification, - getNotificationsByMonitorId, - deleteNotificationsByMonitorId, - getAppSettings, - updateAppSettings, - createStatusPage, - getStatusPageByUrl, -}; +class MongoDB { + static SERVICE_NAME = "MongoDB"; + + constructor() { + Object.assign(this, userModule); + Object.assign(this, inviteModule); + Object.assign(this, recoveryModule); + Object.assign(this, monitorModule); + Object.assign(this, pageSpeedCheckModule); + Object.assign(this, hardwareCheckModule); + Object.assign(this, checkModule); + Object.assign(this, maintenanceWindowModule); + Object.assign(this, notificationModule); + Object.assign(this, settingsModule); + Object.assign(this, statusPageModule); + } + + 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: this.SERVICE_NAME, + method: "connect", + stack: error.stack, + }); + throw error; + } + }; + + 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: this.SERVICE_NAME, + method: "disconnect", + stack: error.stack, + }); + } + }; + checkSuperadmin = async (req, res) => { + const superAdmin = await UserModel.findOne({ role: "superadmin" }); + if (superAdmin !== null) { + return true; + } + return false; + }; +} + +export default MongoDB;