redhare-demo/store/services/banner.service.js

65 lines
1.5 KiB
JavaScript

import apiSlice from './api'
export const bannerApiSlice = apiSlice.injectEndpoints({
endpoints: builder => ({
getBanners: builder.query({
query: ({ category }) => ({
url: `/api/banner?category=${category}`,
method: 'GET',
}),
providesTags: result =>
result
? [
...result?.data.map(({ _id }) => ({
type: 'Banner',
id: _id,
})),
'Banner',
]
: ['Banner'],
}),
getSingleBanner: builder.query({
query: ({ id }) => ({
url: `/api/banner/${id}`,
method: 'GET',
}),
providesTags: (result, err, arg) => [{ type: 'Banner', id: arg.id }],
}),
updateBanner: builder.mutation({
query: ({ id, body }) => ({
url: `/api/banner/${id}`,
method: 'PUT',
body,
}),
invalidatesTags: (result, err, arg) => [{ type: 'Banner', id: arg.id }],
}),
createBanner: builder.mutation({
query: ({ body }) => ({
url: '/api/banner',
method: 'POST',
body,
}),
invalidatesTags: ['Banner'],
}),
deleteBanner: builder.mutation({
query: ({ id }) => ({
url: `/api/banner/${id}`,
method: 'DELETE',
}),
invalidatesTags: ['Banner'],
}),
}),
})
export const {
useGetSingleBannerQuery,
useUpdateBannerMutation,
useCreateBannerMutation,
useDeleteBannerMutation,
useGetBannersQuery,
} = bannerApiSlice