import 'package:flutter/foundation.dart';
import '../services/supabase_service.dart';
import '../models/llm_config_model.dart';

/// LLM 配置仓库
/// 
/// 负责从 Supabase 获取 LLM 配置
class LlmConfigRepository {
  LlmConfigRepository._();

  static LlmConfigModel? _cachedConfig;

  /// 获取当前激活的 LLM 配置
  /// 
  /// 开发阶段默认强制刷新，生产环境可改为 false 使用缓存
  static Future<LlmConfigModel?> getActiveConfig({bool forceRefresh = true}) async {
    if (_cachedConfig != null && !forceRefresh) {
      return _cachedConfig;
    }

    try {
      final response = await SupabaseService.from('llm_config')
          .select()
          .eq('is_active', true)
          .maybeSingle();
      
      if (response == null) {
        debugPrint('⚠️ 没有找到激活的 LLM 配置');
        return null;
      }

      _cachedConfig = LlmConfigModel.fromJson(response);
      debugPrint('✅ LLM 配置已加载: ${_cachedConfig!.model}');
      return _cachedConfig;
    } catch (e) {
      debugPrint('❌ 获取 LLM 配置失败: $e');
      rethrow;
    }
  }

  /// 清除缓存
  static void clearCache() {
    _cachedConfig = null;
  }

  /// 更新配置（需要管理员权限）
  static Future<void> updateConfig(LlmConfigModel config) async {
    try {
      await SupabaseService.from('llm_config')
          .update(config.toJson())
          .eq('id', config.id);
      
      _cachedConfig = config;
      debugPrint('✅ LLM 配置已更新');
    } catch (e) {
      debugPrint('❌ 更新 LLM 配置失败: $e');
      rethrow;
    }
  }
}
