import mongoose from 'mongoose'; // Desactivar bufferCommands para que las operaciones fallen de inmediato y usen el almacenamiento autónomo si MongoDB está offline mongoose.set('bufferCommands', false); const MONGODB_URI = process.env.MONGODB_URI || 'mongodb://localhost:27017/transporte_cali_buenaventura'; let isConnected = false; export function isDatabaseConnected(): boolean { return mongoose.connection.readyState === 1; } export async function connectDatabase(): Promise { if (mongoose.connection.readyState === 1) { isConnected = true; return mongoose; } try { const conn = await mongoose.connect(MONGODB_URI, { autoIndex: true, // Asegura que los índices 2dsphere se construyan automáticamente serverSelectionTimeoutMS: 2500, // Timeout rápido para no retrasar la API connectTimeoutMS: 4000, }); isConnected = true; console.log(`✅ [MongoDB Self-Hosted] Conexión establecida exitosamente a: ${conn.connection.host}`); return conn; } catch (error) { isConnected = false; console.error('❌ [MongoDB Error] Fallo al conectar a la base de datos geoespacial:', error); throw error; } } export async function disconnectDatabase(): Promise { if (!isConnected) return; await mongoose.disconnect(); isConnected = false; console.log('🔌 [MongoDB] Desconectado.'); }