72 lines
2.1 KiB
TypeScript
72 lines
2.1 KiB
TypeScript
import { GetLoyaltyPageMetaData } from "@/lib/graphql/Query/MetaDataLoyaltyPage.graphql"
|
|
import { GetMyPagesMetaData } from "@/lib/graphql/Query/MetaDataMyPages.graphql"
|
|
import { contentstackExtendedProcedureUID, router } from "@/server/trpc"
|
|
|
|
import {
|
|
type GetLoyaltyPageMetaDataData,
|
|
type GetMyPagesMetaDataData,
|
|
validateLoyaltyPageMetaDataContentstackSchema,
|
|
validateMyPagesMetaDataContentstackSchema,
|
|
} from "./output"
|
|
import { getMetaData, getResponse, type Variables } from "./utils"
|
|
|
|
import { PageTypeEnum } from "@/types/requests/pageType"
|
|
|
|
async function getLoyaltyPageMetaData(variables: Variables) {
|
|
const response = await getResponse<GetLoyaltyPageMetaDataData>(
|
|
GetLoyaltyPageMetaData,
|
|
variables
|
|
)
|
|
|
|
const validatedMetaDataData =
|
|
validateLoyaltyPageMetaDataContentstackSchema.safeParse(response.data)
|
|
|
|
if (!validatedMetaDataData.success) {
|
|
console.error(
|
|
`Failed to validate Loyaltypage MetaData Data - (uid: ${variables.uid})`
|
|
)
|
|
console.error(validatedMetaDataData.error)
|
|
return null
|
|
}
|
|
|
|
return getMetaData(validatedMetaDataData.data.loyalty_page)
|
|
}
|
|
|
|
async function getMyPagesMetaData(variables: Variables) {
|
|
const response = await getResponse<GetMyPagesMetaDataData>(
|
|
GetMyPagesMetaData,
|
|
variables
|
|
)
|
|
|
|
const validatedMetaDataData =
|
|
validateMyPagesMetaDataContentstackSchema.safeParse(response.data)
|
|
|
|
if (!validatedMetaDataData.success) {
|
|
console.error(
|
|
`Failed to validate My Page MetaData Data - (uid: ${variables.uid})`
|
|
)
|
|
console.error(validatedMetaDataData.error)
|
|
return null
|
|
}
|
|
|
|
return getMetaData(validatedMetaDataData.data.account_page)
|
|
}
|
|
|
|
export const metaDataQueryRouter = router({
|
|
get: contentstackExtendedProcedureUID.query(async ({ ctx }) => {
|
|
const variables = {
|
|
locale: ctx.lang,
|
|
uid: ctx.uid,
|
|
}
|
|
|
|
switch (ctx.contentType) {
|
|
case PageTypeEnum.accountPage:
|
|
return await getMyPagesMetaData(variables)
|
|
case PageTypeEnum.loyaltyPage:
|
|
return await getLoyaltyPageMetaData(variables)
|
|
default:
|
|
return null
|
|
}
|
|
}),
|
|
})
|