100 lines
2.8 KiB
TypeScript

import { jsonToGraphQLQuery } from 'json-to-graphql-query';
import {
AboutUsPageData,
CertificatesPageData,
CharityPageData,
MainPageData,
} from '@/app/api-utlities/@types/pages';
import {
presentCertificates,
presentCharities,
presentDiscounts,
presentHistoryItems,
presentJobs,
presentPartners,
presentReviews,
presentStations,
presentTeamMembers,
} from '@/app/api-utlities/presenters';
import { aboutUsPageRequest } from '@/app/api-utlities/requests/about-us-page.request copy';
import { certificatesPageRequest } from '@/app/api-utlities/requests/certificates-page.request';
import { charityPageRequest } from '@/app/api-utlities/requests/charity-page.request copy';
import { mainPageRequest } from '@/app/api-utlities/requests/main-page.request';
import { taylorAPI } from '@/shared/api/taylor-api';
export const mainPageApi = taylorAPI.injectEndpoints({
endpoints: (builder) => ({
fetchMainPageContent: builder.query<MainPageData, void>({
query: () => ({
url: '',
method: 'POST',
body: {
query: jsonToGraphQLQuery({ query: mainPageRequest }),
},
}),
transformResponse: (response: any) => {
return {
partners: presentPartners(response.data._partners),
jobs: presentJobs(response.data._vacancies),
discounts: presentDiscounts(response.data._akcii),
stations: presentStations(response.data._azs),
};
},
}),
fetchAboutUsPageContent: builder.query<AboutUsPageData, void>({
query: () => ({
url: '',
method: 'POST',
body: {
query: jsonToGraphQLQuery({ query: aboutUsPageRequest }),
},
}),
transformResponse: (response: any) => {
return {
team: presentTeamMembers(response.data._komanda),
history: presentHistoryItems(response.data._istoriya),
stations: presentStations(response.data._azs),
reviews: presentReviews(response.data._otzyvy),
};
},
}),
fetchCharityPageContent: builder.query<CharityPageData, void>({
query: () => ({
url: '',
method: 'POST',
body: {
query: jsonToGraphQLQuery({ query: charityPageRequest }),
},
}),
transformResponse: (response: any) => {
return {
charities: presentCharities(response.data._blagotvoriteln),
};
},
}),
fetchCertificatesPageContent: builder.query<CertificatesPageData, void>({
query: () => ({
url: '',
method: 'POST',
body: {
query: jsonToGraphQLQuery({ query: certificatesPageRequest }),
},
}),
transformResponse: (response: any) => {
return {
certificates: presentCertificates(response.data._sertifikaty),
};
},
}),
}),
});