import { useMutation, useQueryClient } from '@tanstack/react-query';
import { apiFetch } from '../services/apiClient';

interface DeleteDefinitionPayload {
  wordId: string;
  definitionId: string;
}

async function deleteDefinition({
  wordId,
  definitionId,
}: DeleteDefinitionPayload): Promise<unknown> {
  const response = await apiFetch(
    `/words/${encodeURIComponent(wordId)}/definitions/${encodeURIComponent(definitionId)}`,
    { method: 'DELETE' },
  );

  if (!response.ok) {
    throw new Error(`HTTP error ${response.status}`);
  }

  return response.json();
}

/**
 * Mutation hook to delete a definition from a word.
 * Invalidates both the word detail and the words list on success.
 */
export function useDeleteDefinition() {
  const queryClient = useQueryClient();

  return useMutation({
    mutationFn: deleteDefinition,
    onSuccess: (_data, { wordId }) => {
      queryClient.invalidateQueries({ queryKey: ['words', wordId] });
      queryClient.invalidateQueries({ queryKey: ['words', 'search'] });
    },
  });
}
