import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { message } from 'antd'; import type { CreateModelInput, UpdateModelInput } from '@/types'; import * as api from '@/api/models'; export const modelKeys = { all: ['models'] as const, filtered: (providerId?: string) => ['models', providerId] as const, }; export function useModels(providerId?: string) { return useQuery({ queryKey: modelKeys.filtered(providerId), queryFn: () => api.listModels(providerId), }); } export function useCreateModel() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (input: CreateModelInput) => api.createModel(input), onSuccess: () => { queryClient.invalidateQueries({ queryKey: modelKeys.all }); message.success('模型创建成功'); }, onError: (error: Error) => { message.error(error.message); }, }); } export function useUpdateModel() { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, input }: { id: string; input: UpdateModelInput }) => api.updateModel(id, input), onSuccess: () => { queryClient.invalidateQueries({ queryKey: modelKeys.all }); message.success('模型更新成功'); }, onError: (error: Error) => { message.error(error.message); }, }); } export function useDeleteModel() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id: string) => api.deleteModel(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: modelKeys.all }); message.success('模型删除成功'); }, onError: (error: Error) => { message.error(error.message); }, }); }