'use client'; import { createOrder, getOrder, getOrders, updateOrder } from '@/actions/api/orders'; import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; export const useOrderQuery = ({ documentId }: Parameters[0]) => useQuery({ queryFn: () => getOrder({ documentId }), queryKey: ['order', documentId], }); export const useOrderCreate = () => { const queryClient = useQueryClient(); return useMutation({ mutationFn: createOrder, mutationKey: ['order', 'create'], onSuccess: (data) => { queryClient.invalidateQueries({ queryKey: ['orders'] }); const documentId = data?.createOrder?.documentId; if (documentId) queryClient.prefetchQuery({ queryFn: () => getOrder({ documentId }), queryKey: ['order', documentId], }); }, }); }; export const useOrdersQuery = (variables: Parameters[0], enabled?: boolean) => useQuery({ enabled, queryFn: () => getOrders(variables), queryKey: ['orders', variables], staleTime: 60 * 1_000, }); export const useOrderMutation = ({ documentId, }: Pick[0], 'documentId'>) => { const queryClient = useQueryClient(); return useMutation({ mutationFn: ({ data }: Pick[0], 'data'>) => updateOrder({ data, documentId }), mutationKey: ['order', 'update', documentId], onSuccess: () => { if (documentId) { queryClient.invalidateQueries({ queryKey: ['order', documentId], }); queryClient.invalidateQueries({ queryKey: ['orders'], }); } }, }); };