issues/27: prod baseline without task branch
This commit is contained in:
@@ -1,117 +0,0 @@
|
||||
import { API, authHeader } from './apiSlice'
|
||||
import { CONTENT_RESOURCES } from '../config/contentResources'
|
||||
|
||||
const buildListQuery = (basePath, { usesLimit = false } = {}) =>
|
||||
({ search = '', page = 1, perPage = 20 } = {}) => {
|
||||
let queryString = `?page=${page}`
|
||||
if (usesLimit) {
|
||||
queryString += `&limit=${perPage}`
|
||||
} else {
|
||||
queryString += `&perPage=${perPage}`
|
||||
}
|
||||
if (search) {
|
||||
queryString += `&search=${encodeURIComponent(search)}`
|
||||
}
|
||||
return {
|
||||
url: `${basePath}/list${queryString}`,
|
||||
}
|
||||
}
|
||||
|
||||
const injectResource = (resourceKey) => {
|
||||
const { basePath, listUsesLimit } = CONTENT_RESOURCES[resourceKey]
|
||||
const cap = resourceKey
|
||||
.split('-')
|
||||
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
||||
.join('')
|
||||
|
||||
return API.injectEndpoints({
|
||||
endpoints: (build) => ({
|
||||
[`get${cap}List`]: build.query({
|
||||
query: buildListQuery(basePath, { usesLimit: listUsesLimit }),
|
||||
refetchOnMountOrArgChange: true,
|
||||
keepUnusedDataFor: 0,
|
||||
}),
|
||||
[`get${cap}Item`]: build.query({
|
||||
query: (id) => ({
|
||||
url: `${basePath}/${id}`,
|
||||
}),
|
||||
}),
|
||||
[`create${cap}`]: build.mutation({
|
||||
query: (data) => ({
|
||||
url: `${basePath}/create`,
|
||||
method: 'POST',
|
||||
headers: authHeader(),
|
||||
body: JSON.stringify(data),
|
||||
}),
|
||||
}),
|
||||
[`update${cap}`]: build.mutation({
|
||||
query: ({ id, data }) => ({
|
||||
url: `${basePath}/${id}`,
|
||||
method: 'PUT',
|
||||
headers: authHeader(),
|
||||
body: JSON.stringify(data),
|
||||
}),
|
||||
}),
|
||||
[`delete${cap}`]: build.mutation({
|
||||
query: (id) => ({
|
||||
url: `${basePath}/${id}`,
|
||||
method: 'DELETE',
|
||||
headers: authHeader(),
|
||||
}),
|
||||
}),
|
||||
}),
|
||||
overrideExisting: false,
|
||||
})
|
||||
}
|
||||
|
||||
const newsApi = injectResource('news')
|
||||
const promoApi = injectResource('promo')
|
||||
const diseaseApi = injectResource('disease')
|
||||
const medicalCenterApi = injectResource('medical-center')
|
||||
const articleApi = injectResource('article')
|
||||
const siteServicesApi = injectResource('site-services')
|
||||
|
||||
export const contentHooks = {
|
||||
news: {
|
||||
useListQuery: newsApi.useGetNewsListQuery,
|
||||
useItemQuery: newsApi.useGetNewsItemQuery,
|
||||
useCreateMutation: newsApi.useCreateNewsMutation,
|
||||
useUpdateMutation: newsApi.useUpdateNewsMutation,
|
||||
useDeleteMutation: newsApi.useDeleteNewsMutation,
|
||||
},
|
||||
promo: {
|
||||
useListQuery: promoApi.useGetPromoListQuery,
|
||||
useItemQuery: promoApi.useGetPromoItemQuery,
|
||||
useCreateMutation: promoApi.useCreatePromoMutation,
|
||||
useUpdateMutation: promoApi.useUpdatePromoMutation,
|
||||
useDeleteMutation: promoApi.useDeletePromoMutation,
|
||||
},
|
||||
disease: {
|
||||
useListQuery: diseaseApi.useGetDiseaseListQuery,
|
||||
useItemQuery: diseaseApi.useGetDiseaseItemQuery,
|
||||
useCreateMutation: diseaseApi.useCreateDiseaseMutation,
|
||||
useUpdateMutation: diseaseApi.useUpdateDiseaseMutation,
|
||||
useDeleteMutation: diseaseApi.useDeleteDiseaseMutation,
|
||||
},
|
||||
'medical-center': {
|
||||
useListQuery: medicalCenterApi.useGetMedicalCenterListQuery,
|
||||
useItemQuery: medicalCenterApi.useGetMedicalCenterItemQuery,
|
||||
useCreateMutation: medicalCenterApi.useCreateMedicalCenterMutation,
|
||||
useUpdateMutation: medicalCenterApi.useUpdateMedicalCenterMutation,
|
||||
useDeleteMutation: medicalCenterApi.useDeleteMedicalCenterMutation,
|
||||
},
|
||||
article: {
|
||||
useListQuery: articleApi.useGetArticleListQuery,
|
||||
useItemQuery: articleApi.useGetArticleItemQuery,
|
||||
useCreateMutation: articleApi.useCreateArticleMutation,
|
||||
useUpdateMutation: articleApi.useUpdateArticleMutation,
|
||||
useDeleteMutation: articleApi.useDeleteArticleMutation,
|
||||
},
|
||||
'site-services': {
|
||||
useListQuery: siteServicesApi.useGetSiteServicesListQuery,
|
||||
useItemQuery: siteServicesApi.useGetSiteServicesItemQuery,
|
||||
useCreateMutation: siteServicesApi.useCreateSiteServicesMutation,
|
||||
useUpdateMutation: siteServicesApi.useUpdateSiteServicesMutation,
|
||||
useDeleteMutation: siteServicesApi.useDeleteSiteServicesMutation,
|
||||
},
|
||||
}
|
||||
+1
-2
@@ -1,5 +1,4 @@
|
||||
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
|
||||
import { API_BASE_URL } from '@/config/api'
|
||||
|
||||
export const authHeader = () => {
|
||||
const token = localStorage.getItem('token')
|
||||
@@ -9,7 +8,7 @@ export const authHeader = () => {
|
||||
export const API = createApi({
|
||||
reducerPath: 'API',
|
||||
baseQuery: fetchBaseQuery({
|
||||
baseUrl: API_BASE_URL,
|
||||
baseUrl: 'https://api.sovamed.ru',
|
||||
credentials: 'include',
|
||||
}),
|
||||
endpoints: (builder) => ({
|
||||
|
||||
Reference in New Issue
Block a user