56 lines
1.4 KiB
JavaScript
56 lines
1.4 KiB
JavaScript
import { API, authHeader } from './apiSlice';
|
|
|
|
export const newsApi = API.injectEndpoints({
|
|
endpoints: (build) => ({
|
|
getNewsList: build.query({
|
|
query: ({ search = '', page = '' }) => {
|
|
let queryString = '?';
|
|
if (page) queryString += `page=${page}&perPage=20`;
|
|
else queryString += `perPage=20`;
|
|
if (search) queryString += `&search=${encodeURIComponent(search)}`;
|
|
return {
|
|
url: `/news/list${queryString}`,
|
|
};
|
|
},
|
|
refetchOnMountOrArgChange: true,
|
|
keepUnusedDataFor: 0,
|
|
}),
|
|
getNews: build.query({
|
|
query: ({ newsId }) => ({
|
|
url: `/news/${newsId}`,
|
|
}),
|
|
}),
|
|
createNews: build.mutation({
|
|
query: ({ data }) => ({
|
|
url: `/news/create`,
|
|
method: 'POST',
|
|
headers: authHeader(),
|
|
body: JSON.stringify(data),
|
|
}),
|
|
}),
|
|
updateNews: build.mutation({
|
|
query: ({ newsId, data }) => ({
|
|
url: `/news/${newsId}`,
|
|
method: 'PUT',
|
|
headers: authHeader(),
|
|
body: JSON.stringify(data),
|
|
}),
|
|
}),
|
|
deleteNews: build.mutation({
|
|
query: ({ newsId }) => ({
|
|
url: `/news/${newsId}`,
|
|
method: 'DELETE',
|
|
headers: authHeader(),
|
|
}),
|
|
}),
|
|
}),
|
|
});
|
|
|
|
export const {
|
|
useGetNewsQuery,
|
|
useGetNewsListQuery,
|
|
useCreateNewsMutation,
|
|
useUpdateNewsMutation,
|
|
useDeleteNewsMutation,
|
|
} = newsApi;
|