import { createApi } from "@reduxjs/toolkit/query/react";
import baseQueryWithAuth from "../baseQueryWithAuth";

export type DbTargetData = {
  activeDb: string;
  availableDbs: string[];
};

export type DbTargetResponse = {
  status: boolean;
  message: string;
  data: DbTargetData;
};

export type SetDbTargetResponse = {
  status: boolean;
  message: string;
  data: {
    success: boolean;
    activeDb: string;
  };
};

export const DbTargetAPI = createApi({
  reducerPath: "DbTargetAPI",
  baseQuery: baseQueryWithAuth,
  tagTypes: ["DbTarget"],
  endpoints: (builder) => ({
    getDbTarget: builder.query<DbTargetResponse, { token?: string }>({
      query: ({ token }) => ({
        url: "admin/db-target",
        headers: {
          Authorization: `Bearer ${token}`,
        },
      }),
      providesTags: ["DbTarget"],
    }),
    setDbTarget: builder.mutation<
      SetDbTargetResponse,
      { token?: string; target: string }
    >({
      query: ({ token, target }) => ({
        url: "admin/db-target",
        method: "POST",
        headers: {
          Authorization: `Bearer ${token}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify({ target }),
      }),
      invalidatesTags: ["DbTarget"],
    }),
  }),
});

export const { useGetDbTargetQuery, useSetDbTargetMutation } = DbTargetAPI;
