package system

import (
	"errors"
	"go.uber.org/zap"
	"sundynix-go/global"
	"sundynix-go/model/system"
)

type SysAiConfigService struct{}

// Create 创建AI配置
func (s *SysAiConfigService) Create(cfg *system.SysAiConfig) error {
	return global.DB.Create(cfg).Error
}

// Update 更新AI配置
func (s *SysAiConfigService) Update(cfg *system.SysAiConfig) error {
	return global.DB.Updates(cfg).Error
}

// SetActive 设置激活配置
func (s *SysAiConfigService) SetActive(id string) error {
	// 先将所有的设为 0
	err := global.DB.Model(&system.SysAiConfig{}).Where("1 = 1").Update("is_active", 0).Error
	if err != nil {
		return err
	}
	// 再将指定的设为 1
	return global.DB.Model(&system.SysAiConfig{}).Where("id = ?", id).Update("is_active", 1).Error
}

// GetActiveAiConfig 获取当前激活的AI配置
func (s *SysAiConfigService) GetActiveAiConfig() (*system.SysAiConfig, error) {
	var cfg system.SysAiConfig
	err := global.DB.Where("is_active = 1").First(&cfg).Error
	if err != nil {
		global.Logger.Error("No active AI Config found", zap.Error(err))
		return nil, errors.New("无激活状态的AI配置")
	}
	return &cfg, nil
}

// GetList 获取所有配置
func (s *SysAiConfigService) GetList() ([]system.SysAiConfig, error) {
	var list []system.SysAiConfig
	err := global.DB.Order("created_at desc").Find(&list).Error
	return list, err
}
