import { useMutation, useQueryClient } from '@tanstack/react-query';
import {
  applySavedFilter,
  createSavedFilter,
  deleteSavedFilter,
  type CreateSavedFilterPayload,
} from '@/features/search/services/searchService';
import { savedFiltersQueryKey } from '@/features/search/hooks/useSavedFilters';

export function useSavedFilterMutations() {
  const queryClient = useQueryClient();

  const invalidateFilters = () =>
    queryClient.invalidateQueries({ queryKey: savedFiltersQueryKey });

  const createMutation = useMutation({
    mutationFn: (payload: CreateSavedFilterPayload) => createSavedFilter(payload),
    onSuccess: invalidateFilters,
  });

  const deleteMutation = useMutation({
    mutationFn: (filterId: string) => deleteSavedFilter(filterId),
    onSuccess: invalidateFilters,
  });

  const applyMutation = useMutation({
    mutationFn: ({
      filterId,
      perPage,
      page,
    }: {
      filterId: string;
      perPage?: number;
      page?: number;
    }) => applySavedFilter(filterId, perPage, page),
  });

  return { createMutation, deleteMutation, applyMutation };
}
