66 lines
1.7 KiB
JavaScript
66 lines
1.7 KiB
JavaScript
import { createApi, fetchBaseQuery } from "@reduxjs/toolkit/query/react";
|
|
const API_URI = import.meta.env.VITE_API_URL;
|
|
|
|
export const taskApi = createApi({
|
|
reducerPath: "taskApi",
|
|
baseQuery: fetchBaseQuery({
|
|
baseUrl: `${API_URI}/api/v1/task`,
|
|
credentials: "include",
|
|
}),
|
|
tagTypes: ["Tasks"],
|
|
endpoints: (builder) => ({
|
|
getTasksByFarm: builder.query({
|
|
query: (farmId) => `/farm/${farmId}`,
|
|
providesTags: ["Tasks"],
|
|
}),
|
|
getTaskById: builder.query({
|
|
query: (taskId) => `/${taskId}`,
|
|
providesTags: (result, error, taskId) => [{ type: "Tasks", id: taskId }],
|
|
}),
|
|
createTask: builder.mutation({
|
|
query: (taskData) => ({
|
|
url: "/",
|
|
method: "POST",
|
|
body: taskData,
|
|
}),
|
|
invalidatesTags: ["Tasks"],
|
|
}),
|
|
updateTask: builder.mutation({
|
|
query: ({ taskId, updatedTask }) => ({
|
|
url: `/${taskId}`,
|
|
method: "PUT",
|
|
body: updatedTask,
|
|
}),
|
|
invalidatesTags: (result, error, { taskId }) => [
|
|
{ type: "Tasks", id: taskId },
|
|
],
|
|
}),
|
|
updateTaskStatus: builder.mutation({
|
|
query: ({ taskId, status }) => ({
|
|
url: `/${taskId}/status`,
|
|
method: "PATCH",
|
|
body: { status },
|
|
}),
|
|
invalidatesTags: (result, error, { taskId }) => [
|
|
{ type: "Tasks", id: taskId },
|
|
],
|
|
}),
|
|
deleteTask: builder.mutation({
|
|
query: (taskId) => ({
|
|
url: `/${taskId}`,
|
|
method: "DELETE",
|
|
}),
|
|
invalidatesTags: ["Tasks"],
|
|
}),
|
|
}),
|
|
});
|
|
|
|
export const {
|
|
useGetTasksByFarmQuery,
|
|
useGetTaskByIdQuery,
|
|
useCreateTaskMutation,
|
|
useUpdateTaskMutation,
|
|
useUpdateTaskStatusMutation,
|
|
useDeleteTaskMutation,
|
|
} = taskApi;
|