'use client'; import { createService, getService, getServices, updateService } from '@/actions/api/services'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; export const useServicesQuery = (variables: Parameters[0]) => { return useQuery({ queryFn: () => getServices(variables), queryKey: ['services', variables], }); }; export const useServiceQuery = (variables: Parameters[0]) => { return useQuery({ queryFn: () => getService(variables), queryKey: ['service', variables.documentId], }); }; export const useServiceCreate = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: createService, mutationKey: ['service', 'create'], onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: ['services'] }); const documentId = data?.createService?.documentId; if (documentId) { queryClient.prefetchQuery({ queryFn: () => getService({ documentId }), queryKey: ['service', documentId], }); } }, }); }; export const useServiceMutation = ({ documentId, }: Pick[0], 'documentId'>) => { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ data }: Pick[0], 'data'>) => updateService({ data, documentId }), mutationKey: ['service', 'update', documentId], onSuccess: () => { queryClient.invalidateQueries({ queryKey: ['service', documentId] }); queryClient.invalidateQueries({ queryKey: ['services'] }); }, }); };