import { del, get, post, put } from '@/utils/request';
import type {
  AiAppDto,
  AiAppCreateInput,
  AiAppUpdateInput,
  AiAppGetListInput,
  AiModelDto,
  AiModelCreateInput,
  AiModelUpdateInput,
  AiModelGetListInput,
  AppShortcutDto,
  PagedResultDto,
} from './types';

// ==================== AI应用管理 ====================

// 获取AI应用列表
export function getAppList(params?: AiAppGetListInput) {
  const queryParams = new URLSearchParams();
  if (params?.searchKey) {
    queryParams.append('SearchKey', params.searchKey);
  }
  if (params?.skipCount !== undefined) {
    queryParams.append('SkipCount', params.skipCount.toString());
  }
  if (params?.maxResultCount !== undefined) {
    queryParams.append('MaxResultCount', params.maxResultCount.toString());
  }

  const queryString = queryParams.toString();
  const url = queryString ? `/channel/app?${queryString}` : '/channel/app';

  return get<PagedResultDto<AiAppDto>>(url).json();
}

// 根据ID获取AI应用
export function getAppById(id: string) {
  return get<AiAppDto>(`/channel/app/${id}`).json();
}

// 创建AI应用
export function createApp(data: AiAppCreateInput) {
  return post<AiAppDto>('/channel/app', data).json();
}

// 更新AI应用
export function updateApp(data: AiAppUpdateInput) {
  return put<AiAppDto>('/channel/app', data).json();
}

// 删除AI应用
export function deleteApp(id: string) {
  return del(`/channel/app/${id}`).json();
}

// ==================== AI模型管理 ====================

// 获取AI模型列表
export function getModelList(params?: AiModelGetListInput) {
  const queryParams = new URLSearchParams();
  if (params?.searchKey) {
    queryParams.append('SearchKey', params.searchKey);
  }
  if (params?.aiAppId) {
    queryParams.append('AiAppId', params.aiAppId);
  }
  if (params?.isPremiumOnly !== undefined) {
    queryParams.append('IsPremiumOnly', params.isPremiumOnly.toString());
  }
  if (params?.skipCount !== undefined) {
    queryParams.append('SkipCount', params.skipCount.toString());
  }
  if (params?.maxResultCount !== undefined) {
    queryParams.append('MaxResultCount', params.maxResultCount.toString());
  }

  const queryString = queryParams.toString();
  const url = queryString ? `/channel/model?${queryString}` : '/channel/model';

  return get<PagedResultDto<AiModelDto>>(url).json();
}

// 根据ID获取AI模型
export function getModelById(id: string) {
  return get<AiModelDto>(`/channel/model/${id}`).json();
}

// 创建AI模型
export function createModel(data: AiModelCreateInput) {
  return post<AiModelDto>('/channel/model', data).json();
}

// 更新AI模型
export function updateModel(data: AiModelUpdateInput) {
  return put<AiModelDto>('/channel/model', data).json();
}

// 删除AI模型
export function deleteModel(id: string) {
  return del(`/channel/model/${id}`).json();
}

// 清除尊享模型ID缓存
export function clearPremiumModelCache() {
  return post('/model/clear-premium-cache').json();
}

// ==================== 快捷渠道 ====================

// 获取快捷渠道列表
export function getAppShortcutList() {
  return get<AppShortcutDto[]>('/channel/app-shortcut').json();
}
