Untitled

 avatar
unknown
plain_text
10 months ago
1.4 kB
15
Indexable
import { useQuery, useMutation, useQueryClient } from "@tanstack/react-query";
import { api } from "@/components/lib/api";

export type CaseDTO = {
  id: number;
  date: string;
  patient_id: number;
  protocol: string;
  doctor: string;
  diagnosis?: string;
  status?: string;
  stage?: string;
};

export function useCases() {
  const qc = useQueryClient();

  const casesQuery = useQuery({
    queryKey: ["cases"],
    queryFn: async () => {
      const { data } = await api.get<CaseDTO[]>("/cases/");
      return data;
    },
  });

  const createCase = useMutation({
    mutationFn: async (payload: Omit<CaseDTO, "id">) => {
      const { data } = await api.post("/cases/", payload);
      return data as CaseDTO;
    },
    onSuccess: () => qc.invalidateQueries({ queryKey: ["cases"] }),
  });

  const updateCase = useMutation({
    mutationFn: async (payload: CaseDTO) => {
      const { data } = await api.patch(`/cases/${payload.id}/`, payload);
      return data as CaseDTO;
    },
    onSuccess: () => qc.invalidateQueries({ queryKey: ["cases"] }),
  });

  const deleteCase = useMutation({
    mutationFn: async (id: number) => {
      await api.delete(`/cases/${id}/`);
      return id;
    },
    onSuccess: () => qc.invalidateQueries({ queryKey: ["cases"] }),
  });

  return { casesQuery, createCase, updateCase, deleteCase };
}
Editor is loading...
Leave a Comment