import { MongoClient, Db } from 'mongodb'; import { createLogger } from './logger'; const log = createLogger("db:client"); let client: MongoClient | null = null; let db: Db | null = null; /** * Connect to MongoDB * @returns Database instance */ export async function connectToDatabase(): Promise { if (!process.env.MONGODB_URI) { throw new Error('MONGODB_URI environment variable is not set'); } if (db) { log('Reusing existing database connection'); return db; } log('Creating new database connection'); client = new MongoClient(process.env.MONGODB_URI); await client.connect(); db = client.db("utility-bills"); log('Connected to database'); return db; } /** * Disconnect from MongoDB */ export async function disconnectFromDatabase(): Promise { if (client) { log('Disconnecting from database'); await client.close(); client = null; db = null; log('Disconnected from database'); } } /** * Get current database instance (must call connectToDatabase first) */ export function getDatabase(): Db { if (!db) { throw new Error('Database not connected. Call connectToDatabase() first.'); } return db; }