import { apiSlice } from "./index";
import URLS from "./constants";
import { generateQueryString } from "@/utils/queryStringUtil";
import { GetUnitJobByIdResponse, GetUnitJobListResponse, GetUnitJobsParams, UnitJob } from "@/types/unitJob";

export const unitJobApi = apiSlice.injectEndpoints({
  endpoints: (builder) => ({
    getUnitJobsByProjectId: builder.query<GetUnitJobListResponse, GetUnitJobsParams>({
      query: ({ projectId, ...params }) => ({
        url: `${URLS.PROJECT}/${projectId}/units/jobs?${generateQueryString(
          params as Record<string, unknown>
        )}`,
        method: "GET",
      }),
      providesTags: ["UnitJobs"],
    }),

    getUnitJobById: builder.query<
      GetUnitJobByIdResponse,
      { projectId: string; jobId: string }
    >({
      query: ({ projectId, jobId }) => ({
        url: `${URLS.PROJECT}/${projectId}/units/jobs/${jobId}`,
        method: "GET",
      }),
      providesTags: ["UnitJobs"],
    }),
  }),
});

export const {
  useGetUnitJobsByProjectIdQuery,
  useGetUnitJobByIdQuery,
  useLazyGetUnitJobsByProjectIdQuery,
  useLazyGetUnitJobByIdQuery,
} = unitJobApi;