feat(SW-66, SW-348): search functionality and ui
This commit is contained in:
@@ -1,62 +1,11 @@
|
||||
import { z } from "zod"
|
||||
|
||||
export const getMetaDataSchema = z.object({
|
||||
breadcrumbsTitle: z.string().optional(),
|
||||
title: z.string().optional(),
|
||||
description: z.string().optional(),
|
||||
imageConnection: z
|
||||
.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: z.object({
|
||||
url: z.string(),
|
||||
}),
|
||||
})
|
||||
),
|
||||
})
|
||||
.optional(),
|
||||
})
|
||||
import { page } from "../schemas/metadata"
|
||||
|
||||
const page = z.object({
|
||||
web: z.object({
|
||||
seo_metadata: z.object({
|
||||
title: z.string().optional(),
|
||||
description: z.string().optional(),
|
||||
imageConnection: z
|
||||
.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: z.object({
|
||||
url: z.string(),
|
||||
}),
|
||||
})
|
||||
),
|
||||
})
|
||||
.optional(),
|
||||
}),
|
||||
breadcrumbs: z.object({
|
||||
title: z.string(),
|
||||
}),
|
||||
}),
|
||||
system: z.object({
|
||||
uid: z.string(),
|
||||
}),
|
||||
})
|
||||
|
||||
export type Page = z.infer<typeof page>
|
||||
|
||||
export const validateMyPagesMetaDataContentstackSchema = z.object({
|
||||
account_page: page,
|
||||
})
|
||||
|
||||
export type GetMyPagesMetaDataData = z.infer<
|
||||
typeof validateMyPagesMetaDataContentstackSchema
|
||||
>
|
||||
|
||||
export const validateLoyaltyPageMetaDataContentstackSchema = z.object({
|
||||
export const getLoyaltyPageMetadataSchema = z.object({
|
||||
loyalty_page: page,
|
||||
})
|
||||
|
||||
export type GetLoyaltyPageMetaDataData = z.infer<
|
||||
typeof validateLoyaltyPageMetaDataContentstackSchema
|
||||
typeof getLoyaltyPageMetadataSchema
|
||||
>
|
||||
|
||||
@@ -1,12 +1,9 @@
|
||||
import { GetLoyaltyPageMetaData } from "@/lib/graphql/Query/MetaDataLoyaltyPage.graphql"
|
||||
import { GetMyPagesMetaData } from "@/lib/graphql/Query/MetaDataMyPages.graphql"
|
||||
import { GetLoyaltyPageMetaData } from "@/lib/graphql/Query/LoyaltyPage/MetaData.graphql"
|
||||
import { contentstackExtendedProcedureUID, router } from "@/server/trpc"
|
||||
|
||||
import {
|
||||
type GetLoyaltyPageMetaDataData,
|
||||
type GetMyPagesMetaDataData,
|
||||
validateLoyaltyPageMetaDataContentstackSchema,
|
||||
validateMyPagesMetaDataContentstackSchema,
|
||||
getLoyaltyPageMetadataSchema,
|
||||
} from "./output"
|
||||
import { getMetaData, getResponse, type Variables } from "./utils"
|
||||
|
||||
@@ -18,38 +15,19 @@ async function getLoyaltyPageMetaData(variables: Variables) {
|
||||
variables
|
||||
)
|
||||
|
||||
const validatedMetaDataData =
|
||||
validateLoyaltyPageMetaDataContentstackSchema.safeParse(response.data)
|
||||
const validatedMetadata = getLoyaltyPageMetadataSchema.safeParse(
|
||||
response.data
|
||||
)
|
||||
|
||||
if (!validatedMetaDataData.success) {
|
||||
if (!validatedMetadata.success) {
|
||||
console.error(
|
||||
`Failed to validate Loyaltypage MetaData Data - (uid: ${variables.uid})`
|
||||
)
|
||||
console.error(validatedMetaDataData.error)
|
||||
console.error(validatedMetadata.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)
|
||||
return getMetaData(validatedMetadata.data.loyalty_page)
|
||||
}
|
||||
|
||||
export const metaDataQueryRouter = router({
|
||||
@@ -60,8 +38,6 @@ export const metaDataQueryRouter = router({
|
||||
}
|
||||
|
||||
switch (ctx.contentType) {
|
||||
case PageTypeEnum.accountPage:
|
||||
return await getMyPagesMetaData(variables)
|
||||
case PageTypeEnum.loyaltyPage:
|
||||
return await getLoyaltyPageMetaData(variables)
|
||||
default:
|
||||
|
||||
@@ -4,7 +4,7 @@ import { internalServerError, notFound } from "@/server/errors/trpc"
|
||||
|
||||
import { generateTag } from "@/utils/generateTag"
|
||||
|
||||
import { getMetaDataSchema, Page } from "./output"
|
||||
import { getMetaDataSchema, Page } from "../schemas/metadata"
|
||||
|
||||
export type Variables = {
|
||||
locale: Lang
|
||||
|
||||
Reference in New Issue
Block a user