Untitled
unknown
plain_text
a year ago
1.4 kB
17
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