import { useQuery } from "@tanstack/react-query";
import type { Unit } from "./UnitsQuery";
import { QueryKeys } from "@/enums/QueryKeys";
import {
    getAllUnitRelations,
    getSingleUnitRelation,
} from "@/utils/apiFunctions/unitRelationApiFunction";

export type UnitRelation = {
    id: number;
    parent_unit_id: number;
    child_unit_id: number;
    conversion_factor: number;
    created_at: string;
    updated_at: string;
    parent_unit: Unit;
    child_unit: Unit;
};
type ResponseUnitRelationData = ResponseType & {
    data: UnitRelation[];
};

type ResponseSingleUnitRelationData = ResponseType & {
    data: UnitRelation;
};

export const useUnitRelationQuery = (enabled: boolean = true) =>
    useQuery<UnitRelation[], Error>({
        queryKey: [QueryKeys.unitRelations],
        queryFn: async () => {
            const res: ResponseUnitRelationData = await getAllUnitRelations();
            return res.data;
        },
        enabled,
        staleTime: 10 * 60 * 1000,
        refetchOnWindowFocus: false,
        refetchOnReconnect: false,
    });

export const useSingleUnitRelationQuery = (
    unitRelationID: number | undefined,
) =>
    useQuery<UnitRelation, Error>({
        queryKey: [QueryKeys.singleUnitRelation, unitRelationID],
        queryFn: async () => {
            const res: ResponseSingleUnitRelationData =
                await getSingleUnitRelation(unitRelationID);
            return res.data;
        },
        enabled: !!unitRelationID,
    });
