import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import { pmSchedulesApi } from '../../lib/api/services'; import { toast } from 'react-toastify'; import { PM_SCHEDULES_LIST, PM_SCHEDULES_DETAIL, API_SUCCESS_MESSAGE, API_ERROR_MESSAGE, } from '../../constants'; /** * Hook to fetch PM schedules list */ export function usePMSchedules(params = {}) { return useQuery({ queryKey: [PM_SCHEDULES_LIST, params], queryFn: () => pmSchedulesApi.getList(params), keepPreviousData: true, }); } /** * Hook to fetch a single PM schedule by ID */ export function usePMSchedule(id, options = {}) { return useQuery({ queryKey: [PM_SCHEDULES_DETAIL, id], queryFn: () => pmSchedulesApi.getById(id), enabled: !!id, ...options, }); } /** * Hook to save (create/update) a PM schedule */ export function useSavePMSchedule() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (data) => pmSchedulesApi.save(data), onSuccess: () => { queryClient.invalidateQueries([PM_SCHEDULES_LIST]); queryClient.invalidateQueries([PM_SCHEDULES_DETAIL]); toast.success('PM schedule saved successfully!'); }, onError: (error) => { toast.error(error.message || API_ERROR_MESSAGE); }, }); } /** * Hook to delete a PM schedule */ export function useDeletePMSchedule() { const queryClient = useQueryClient(); return useMutation({ mutationFn: (id) => pmSchedulesApi.delete(id), onSuccess: () => { queryClient.invalidateQueries([PM_SCHEDULES_LIST]); toast.success('PM schedule deleted successfully!'); }, onError: (error) => { toast.error(error.message || API_ERROR_MESSAGE); }, }); }