import { useOne, useSave } from "@/lib/hooks/useDataSource"; import { TDataSourceError } from "@/lib/hooks/useDataSource/types"; import { useDataSource } from "@/lib/hooks/useDataSource/useDataSource"; import { useQueryKey } from "@/lib/hooks/useQueryKey"; import { ICreateQuote_Request_DTO, ICreateQuote_Response_DTO, IGetQuote_Response_DTO, UniqueID, } from "@shared/contexts"; export type UseQuotesGetParamsType = { enabled?: boolean; queryOptions?: Record; }; export const useQuotes = (params?: UseQuotesGetParamsType) => { const dataSource = useDataSource(); const keys = useQueryKey(); return { useQuery: () => useOne({ queryKey: keys().data().resource("quotes").action("one").id("").params().get(), queryFn: () => dataSource.getOne({ resource: "quotes", id: "", }), ...params, }), useMutation: () => useSave({ mutationKey: keys().data().resource("quotes").action("one").id("").params().get(), mutationFn: (data) => { let { id, status } = data; if (!id) { id = UniqueID.generateNewID().object.toString(); status = "draft"; } return dataSource.createOne({ resource: "quotes", data: { ...data, status, id, }, }); }, }), }; };