import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { message } from 'antd'; import type { CreateProviderInput, UpdateProviderInput } from '@/types'; import * as api from '@/api/providers'; export const providerKeys = { all: ['providers'] as const, }; export function useProviders() { return useQuery({ queryKey: providerKeys.all, queryFn: api.listProviders, }); } export function useCreateProvider() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (input: CreateProviderInput) => api.createProvider(input), onSuccess: () => { queryClient.invalidateQueries({ queryKey: providerKeys.all }); message.success('供应商创建成功'); }, onError: (error: Error) => { message.error(error.message); }, }); } export function useUpdateProvider() { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ id, input }: { id: string; input: UpdateProviderInput }) => api.updateProvider(id, input), onSuccess: () => { queryClient.invalidateQueries({ queryKey: providerKeys.all }); message.success('供应商更新成功'); }, onError: (error: Error) => { message.error(error.message); }, }); } export function useDeleteProvider() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id: string) => api.deleteProvider(id), onSuccess: () => { queryClient.invalidateQueries({ queryKey: providerKeys.all }); message.success('供应商删除成功'); }, onError: (error: Error) => { message.error(error.message); }, }); }