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( 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( 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 } }), })