const mongoose = require('mongoose');

// Переопределяем функцию подключения к БД 
const connectDB = async () => {
  try {
    // Убедись, что process.env.MONGO_URI действительно загружается из .env
    if (!process.env.MONGO_URI) {
      console.error('Ошибка: MONGO_URI не определена в .env файле!');
      process.exit(1);
    }

    // Получаем URI и проверяем имя базы данных
    let mongoURI = process.env.MONGO_URI;
    
    // Проверяем, содержит ли URI имя базы данных
    const uriParts = mongoURI.split('/');
    const lastPart = uriParts[uriParts.length - 1];
    
    // Логируем для отладки (можно удалить потом)
    console.log('Имя базы данных из URI:', lastPart.split('?')[0]);
    
    // Проверяем, соответствует ли имя базы данных ожидаемому
    // Если имя не соответствует нужному, можно принудительно заменить
    const expectedDBName = 'dating-app'; // Используем одно имя везде
    
    if (lastPart.split('?')[0] !== expectedDBName) {
      console.log(`Внимание: имя базы данных в URI (${lastPart.split('?')[0]}) отличается от ожидаемого (${expectedDBName})`);
      // Если в URI нет параметров после имени
      if (!lastPart.includes('?')) {
        uriParts[uriParts.length - 1] = expectedDBName;
      } else {
        // Если есть параметры после имени базы данных
        const params = lastPart.split('?')[1];
        uriParts[uriParts.length - 1] = `${expectedDBName}?${params}`;
      }
      mongoURI = uriParts.join('/');
      console.log('URI подключения был изменен для использования базы данных:', expectedDBName);
    }

    const conn = await mongoose.connect(mongoURI);

    console.log(`MongoDB подключена: ${conn.connection.host}`); // Эта строка тоже важна
  } catch (error) {
    console.error(`Ошибка подключения к MongoDB: ${error.message}`);
    process.exit(1); // Эта строка может быть причиной, если есть ошибка подключения
  }
};

// Экспортируем функцию явным образом
module.exports = connectDB;
console.log('Модуль db.js загружен, тип экспортируемого объекта:', typeof module.exports);