import { useMutation, useQuery } from "react-query"; import type { MutationOptions } from "@/@types/types/query.types"; import type { IStrategyRunnerResponse } from "@/@types/types/strategy-service.types"; import { useHttp } from "@/hooks/useHttp"; import { setParametersToStrategyRunner } from "@/libs/helpers/strategy-service.helper"; import type { IBookingRequest } from "@/models/booking-request.model"; import { useServerDataCtx } from "@/providers/server-data-provider/server-data-provider"; import type { BookingRequestBodyVariablesTypes } from "./booking-request-service.serializer"; import { bookingRequestBodySerializer, bookingRequestResultSerializer, bookingRequestResultSerializerWithPagiData, } from "./booking-request-service.serializer"; import type { IBookingRequestResponse } from "./booking-request-service.types"; export const useBookingRequestsQuery = ( variables: BookingRequestBodyVariablesTypes, queryOptions?: MutationOptions, ) => { const http = useHttp("wl-display-api"); const { strategyKeys } = useServerDataCtx(); const service = () => http .post< IStrategyRunnerResponse<{ data: IBookingRequestResponse[]; recordsFiltered: number; recordsTotal: number; }> >( "/api/v1/strategy/run", setParametersToStrategyRunner( bookingRequestBodySerializer(variables), strategyKeys.selectList, ), ) .then((res) => bookingRequestResultSerializer(res.data)); return useQuery({ queryFn: service, queryKey: [ "booking-request-list-serialized", variables.pagination?.pageNumber, ], keepPreviousData: true, ...queryOptions, }); }; export const useBookingRequestsMutation = () => { const http = useHttp("wl-display-api"); const { strategyKeys } = useServerDataCtx(); const service = (variables: BookingRequestBodyVariablesTypes) => http .post< IStrategyRunnerResponse<{ data: IBookingRequestResponse[]; recordsFiltered: number; recordsTotal: number; }> >( "/api/v1/strategy/run", setParametersToStrategyRunner( bookingRequestBodySerializer(variables), strategyKeys.selectList, ), ) .then((res) => bookingRequestResultSerializerWithPagiData(res.data)); return useMutation(service); };