Files
CropCompass/Frontend/src/store/api/taskApi.js
T

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;