153 lines
3.2 KiB
JavaScript
153 lines
3.2 KiB
JavaScript
// io.service.js
|
|
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
|
|
import { api } from "./api.service";
|
|
|
|
const baseUrl = api?.defaults.baseURL;
|
|
// Define a service using a base URL and expected endpoints
|
|
export const ioService = createApi({
|
|
reducerPath: "ioService",
|
|
baseQuery: fetchBaseQuery({ baseUrl }),
|
|
tagTypes: ["getIO", "getKeyMerits", "getArtifacts", "getInvestmentDocuments"],
|
|
endpoints: (builder) => ({
|
|
|
|
|
|
|
|
// =====[get]
|
|
getIOs: builder.query({
|
|
query: ({ page, size }) => `/io/admin?page=${page}&size=${size}`,
|
|
providesTags: ["getIO"],
|
|
}),
|
|
|
|
|
|
|
|
getIOById: builder.query({
|
|
query: (id) => ({ url: `/io/admin/${id}` }),
|
|
providesTags: ["getIO"],
|
|
}),
|
|
|
|
|
|
|
|
|
|
// =====[create]
|
|
createIO: builder.mutation({
|
|
query: (data) => ({
|
|
url: `/io/admin`,
|
|
method: "POST",
|
|
body: data,
|
|
}),
|
|
invalidatesTags: ["getIO"],
|
|
}),
|
|
|
|
|
|
|
|
updateIO: builder.mutation({
|
|
query: ({ data, id }) => ({
|
|
url: `/io/admin/${id}`,
|
|
method: "PATCH",
|
|
body: data,
|
|
}),
|
|
invalidatesTags: ["getIO"],
|
|
}),
|
|
|
|
|
|
|
|
|
|
|
|
// =====[Key Merits]
|
|
getKeyMerits: builder.query({
|
|
query: (id) => `/io/admin/key-merits/${id}`,
|
|
providesTags: ["getKeyMerits"],
|
|
}),
|
|
createKeyMerits: builder.mutation({
|
|
query: ({ data, id }) => ({
|
|
url: `/io/admin/key-merits/${id}`,
|
|
method: "POST",
|
|
body: data,
|
|
// No need to manually set 'Content-Type'
|
|
}),
|
|
invalidatesTags: ["getKeyMerits"],
|
|
}),
|
|
|
|
deleteKeyMerits: builder.mutation({
|
|
query: (id) => ({
|
|
url: `/io/admin/key-merits/hard-delete/${id}`,
|
|
method: "DELETE",
|
|
}),
|
|
invalidatesTags: ["getKeyMerits"],
|
|
}),
|
|
updateKeyMerits: builder.mutation({
|
|
query: ({ data, id }) => ({ url: `/io/admin/key-merits/byId/${id}` ,
|
|
method: "PATCH",
|
|
body: data,
|
|
}),
|
|
invalidatesTags: ["getKeyMerits"],
|
|
}),
|
|
|
|
|
|
|
|
// =====[getIODocument]
|
|
createInvestmentDocuments: builder.mutation({
|
|
query: ({data, id}) => ({
|
|
url: `/io/admin/document/${id}`,
|
|
method: "POST",
|
|
body: data,
|
|
}),
|
|
|
|
invalidatesTags: ["getInvestmentDocuments"],
|
|
}),
|
|
|
|
getInvestmentDocuments: builder.query({
|
|
query: (id) => `/io/admin/document/${id}`,
|
|
providesTags: ["getInvestmentDocuments"],
|
|
}),
|
|
|
|
deleteIODocs: builder.mutation({
|
|
query: (id) => ({
|
|
url: `/io/admin/document/hard-delete/${id}`,
|
|
method: "DELETE",
|
|
}),
|
|
invalidatesTags: ["getInvestmentDocuments"],
|
|
}),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// =====[Artifacts]
|
|
getArtifacts: builder.query({
|
|
query: (id) => `/io/admin/artifact/${id}`,
|
|
providesTags: ["getArtifacts"],
|
|
}),
|
|
|
|
|
|
|
|
|
|
}),
|
|
});
|
|
|
|
// Export hooks for usage in functional components
|
|
export const {
|
|
useGetIOsQuery,
|
|
useGetIOByIdQuery,
|
|
useCreateIOMutation ,
|
|
useUpdateIOMutation,
|
|
|
|
|
|
|
|
useGetKeyMeritsQuery,
|
|
useCreateKeyMeritsMutation,
|
|
useDeleteKeyMeritsMutation,
|
|
useUpdateKeyMeritsMutation,
|
|
|
|
useGetInvestmentDocumentsQuery,
|
|
useCreateInvestmentDocumentsMutation,
|
|
useDeleteIODocsMutation,
|
|
|
|
|
|
useGetArtifactsQuery,
|
|
} =
|
|
ioService;
|