/**
 * Загрузка RPC URL из базы данных и установка в переменные окружения
 * Copyright (c) 2024-2026 Тарабанов Александр Викторович
 */

// Убрано - не нужен для загрузки RPC

/**
 * Загружает RPC URL из базы данных и устанавливает их в переменные окружения
 */
async function loadRpcFromDatabase() {
  try {
    console.log('[RPC Loader] Загружаем RPC URL из базы данных...');
    
    // Получаем все RPC провайдеры из базы данных
    const rpcService = require('../services/rpcProviderService');
    const providers = await rpcService.getAllRpcProviders();
    
    if (providers.length === 0) {
      console.warn('[RPC Loader] В базе данных нет RPC провайдеров');
      return;
    }
    
    console.log(`[RPC Loader] Найдено ${providers.length} RPC провайдеров в базе данных`);
    
    // Устанавливаем переменные окружения для каждой сети
    for (const provider of providers) {
      const chainId = provider.chain_id;
      const rpcUrl = provider.rpc_url;
      
      if (!rpcUrl) {
        console.warn(`[RPC Loader] RPC URL не найден для chain_id ${chainId}`);
        continue;
      }
      
      // Устанавливаем переменные окружения в зависимости от chain_id
      switch (chainId) {
        case 1: // Ethereum Mainnet
          process.env.MAINNET_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен MAINNET_RPC_URL: ${rpcUrl}`);
          break;
        case 11155111: // Sepolia
          process.env.SEPOLIA_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен SEPOLIA_RPC_URL: ${rpcUrl}`);
          break;
        case 17000: // Holesky
          process.env.HOLESKY_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен HOLESKY_RPC_URL: ${rpcUrl}`);
          break;
        case 421614: // Arbitrum Sepolia
          process.env.ARBITRUM_SEPOLIA_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен ARBITRUM_SEPOLIA_RPC_URL: ${rpcUrl}`);
          break;
        case 84532: // Base Sepolia
          process.env.BASE_SEPOLIA_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен BASE_SEPOLIA_RPC_URL: ${rpcUrl}`);
          break;
        case 42161: // Arbitrum One
          process.env.ARBITRUM_ONE_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен ARBITRUM_ONE_RPC_URL: ${rpcUrl}`);
          break;
        case 8453: // Base
          process.env.BASE_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен BASE_RPC_URL: ${rpcUrl}`);
          break;
        case 137: // Polygon
          process.env.POLYGON_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен POLYGON_RPC_URL: ${rpcUrl}`);
          break;
        case 56: // BSC
          process.env.BSC_RPC_URL = rpcUrl;
          console.log(`[RPC Loader] Установлен BSC_RPC_URL: ${rpcUrl}`);
          break;
        default:
          console.log(`[RPC Loader] Неизвестный chain_id ${chainId}, пропускаем`);
      }
    }
    
    console.log('[RPC Loader] ✅ RPC URL успешно загружены из базы данных');
    
  } catch (error) {
    console.error('[RPC Loader] ❌ Ошибка загрузки RPC URL из базы данных:', error);
    throw error;
  }
}

module.exports = { loadRpcFromDatabase };
