/**
 * 模型相关业务逻辑
 */
import { ref } from 'vue'
import { modelApi } from '@/core/api'
import type { Model } from '@/shared/types'
import { ElMessage } from 'element-plus'

export function useModels() {
  const loading = ref(false)
  const models = ref<Model[]>([])

  /**
   * 获取模型列表
   */
  const fetchModels = async () => {
    loading.value = true
    try {
      const res = await modelApi.list()
      // 处理两种响应格式
      if (Array.isArray(res)) {
        models.value = res
      } else if (res?.data && Array.isArray(res.data)) {
        models.value = res.data
      } else if (res?.results && Array.isArray(res.results)) {
        models.value = res.results
      } else {
        models.value = []
      }
    } catch (error: any) {
      console.error('获取模型列表失败:', error)
      ElMessage.error('获取模型列表失败')
      models.value = []
    } finally {
      loading.value = false
    }
  }

  /**
   * 添加模型
   */
  const addModel = async (data: Partial<Model>): Promise<boolean> => {
    try {
      await modelApi.create(data)
      ElMessage.success('添加成功')
      await fetchModels()
      return true
    } catch (error: any) {
      console.error('添加模型失败:', error)
      ElMessage.error(error?.message || '添加模型失败')
      return false
    }
  }

  /**
   * 更新模型
   */
  const updateModel = async (id: number, data: Partial<Model>): Promise<boolean> => {
    try {
      await modelApi.update(id, data)
      ElMessage.success('更新成功')
      await fetchModels()
      return true
    } catch (error: any) {
      console.error('更新模型失败:', error)
      ElMessage.error(error?.message || '更新模型失败')
      return false
    }
  }

  /**
   * 删除模型
   */
  const deleteModel = async (id: number): Promise<boolean> => {
    try {
      await modelApi.delete(id)
      ElMessage.success('删除成功')
      await fetchModels()
      return true
    } catch (error: any) {
      console.error('删除模型失败:', error)
      ElMessage.error(error?.message || '删除模型失败')
      return false
    }
  }

  /**
   * 设置默认模型
   */
  const setDefaultModel = async (id: number): Promise<boolean> => {
    try {
      await modelApi.setDefault(id)
      ElMessage.success('设置成功')
      await fetchModels()
      return true
    } catch (error: any) {
      console.error('设置默认模型失败:', error)
      ElMessage.error(error?.message || '设置默认模型失败')
      return false
    }
  }

  return {
    loading,
    models,
    fetchModels,
    addModel,
    updateModel,
    deleteModel,
    setDefaultModel
  }
}
