Files
TurboTrades/config/database.js
2026-01-10 04:57:43 +00:00

61 lines
1.4 KiB
JavaScript

import mongoose from "mongoose";
import { config } from "./index.js";
let isConnected = false;
export const connectDatabase = async () => {
if (isConnected) {
console.log("📦 Using existing database connection");
return;
}
try {
const options = {
maxPoolSize: 10,
serverSelectionTimeoutMS: 5000,
socketTimeoutMS: 45000,
};
await mongoose.connect(config.mongodb.uri, options);
isConnected = true;
console.log("✅ MongoDB connected successfully");
mongoose.connection.on("error", (err) => {
console.error("❌ MongoDB connection error:", err);
isConnected = false;
});
mongoose.connection.on("disconnected", () => {
console.warn("⚠️ MongoDB disconnected");
isConnected = false;
});
process.on("SIGINT", async () => {
await mongoose.connection.close();
console.log("🔌 MongoDB connection closed through app termination");
process.exit(0);
});
} catch (error) {
console.error("❌ Error connecting to MongoDB:", error);
process.exit(1);
}
};
export const disconnectDatabase = async () => {
if (!isConnected) {
return;
}
try {
await mongoose.connection.close();
isConnected = false;
console.log("🔌 MongoDB disconnected");
} catch (error) {
console.error("❌ Error disconnecting from MongoDB:", error);
}
};
export default { connectDatabase, disconnectDatabase };