import api from '../../../utils/api';
import { useMutation } from '@tanstack/react-query';
import { queryClient } from '../../../utils/queryClient';

export function useUploadKBPdf() {
  return useMutation({
    mutationFn: async (payload: { knowledge_base_id: string; file: File }) => {
      const fd = new FormData();
      fd.append('knowledge_base_id', payload.knowledge_base_id);
      fd.append('file', payload.file);
      const res = await api.post('/knowledge-base/pdf-upload', fd, {
        headers: { 'Content-Type': 'multipart/form-data' },
      });
      return res.data;
    },
    onSuccess: (_data, payload) => {
      queryClient.invalidateQueries(['kb-docs', payload.knowledge_base_id]);
    },
  });
}

export function useUploadKBUrl() {
  return useMutation({
    mutationFn: async (payload: { url: string; knowledge_base_id: string; depth?: number }) => {
      const res = await api.post(`/knowledge-base/url-upload`, {
        url: payload.url,
        title: payload.url,
        knowledge_base_id: payload.knowledge_base_id,
        depth: payload.depth || 1,
      });
      return res.data;
    },
    onSuccess: (_data, payload) => {
      queryClient.invalidateQueries(['kb-docs', payload.knowledge_base_id]);
    },
  });
}

export function useCreateKB() {
  return useMutation({
    mutationFn: async (payload: { name: string }) => {
      const res = await api.post('/knowledge-base', { name: payload.name });
      return res.data;
    },
    onSuccess: () => queryClient.invalidateQueries(['knowledge-bases']),
  });
}

export function useAddFAQ() {
  return useMutation({
    mutationFn: async (body: { question: string; answer: string; agentId: string }) => {
      await api.post('/knowledge-base/AddFAQ', body);
    },
    onSuccess: () => queryClient.invalidateQueries(['faqs']),
  });
}

export function useDeleteFAQ() {
  return useMutation({
    mutationFn: async (pontId: string) => {
      await api.delete(`/knowledge-base/delete_faq/${pontId}`);
    },
    onSuccess: () => queryClient.invalidateQueries(['faqs']),
  });
}

export function useDeleteDocument() {
  return useMutation({
    mutationFn: async (id: string) => {
      await api.delete(`/knowledge-base/documents/${id}`);
      return id;
    },
    onSuccess: (_data, id) => queryClient.invalidateQueries(['kb-docs']),
  });
}
