db/index.ts
1.0 KB · sha256:e4906080f188a0e8744dee571e39671ce8960a624a99bab3e1fe27d9d8a0548d
import "../config/env";
import { connectDB } from "./odm";
import "../models/Group";
import "../models/Player";
import "../models/Track";
import "../models/Node";
let connectionPromise: Promise<void> | null = null;
export function ensureDBConnection(): Promise<void> {
if (!connectionPromise) {
connectionPromise = connectDB().catch((error) => {
connectionPromise = null;
throw error;
});
}
return connectionPromise;
}
export async function withDBConnection<T>(
operation: () => Promise<T>,
): Promise<T> {
await ensureDBConnection();
return operation();
}
export async function checkDBHealth(): Promise<boolean> {
try {
await ensureDBConnection();
const { connection } = (await import("mongoose")).default;
if (connection.readyState === 1 && connection.db) {
await connection.db.admin().ping();
return true;
}
return false;
} catch (error) {
console.error("Database health check failed:", error);
return false;
}
}