feat(SW-186): changed name existing header query to currentHeader query and all related types
This commit is contained in:
@@ -17,7 +17,7 @@ export default async function Header({
|
||||
languageSwitcher: React.ReactNode
|
||||
myPagesMobileDropdown: React.ReactNode
|
||||
}) {
|
||||
const data = await serverClient().contentstack.base.header({
|
||||
const data = await serverClient().contentstack.base.currentHeader({
|
||||
lang: getLang(),
|
||||
})
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ export type ContactFields = {
|
||||
footnote: string | null
|
||||
}
|
||||
|
||||
export const validateHeaderConfigSchema = z.object({
|
||||
export const validateCurrentHeaderConfigSchema = z.object({
|
||||
all_current_header: z.object({
|
||||
items: z.array(
|
||||
z.object({
|
||||
@@ -111,16 +111,18 @@ export const validateHeaderConfigSchema = z.object({
|
||||
}),
|
||||
})
|
||||
|
||||
export type HeaderDataRaw = z.infer<typeof validateHeaderConfigSchema>
|
||||
export type CurrentHeaderDataRaw = z.infer<
|
||||
typeof validateCurrentHeaderConfigSchema
|
||||
>
|
||||
|
||||
export type HeaderData = Omit<
|
||||
HeaderDataRaw["all_current_header"]["items"][0],
|
||||
export type CurrentHeaderData = Omit<
|
||||
CurrentHeaderDataRaw["all_current_header"]["items"][0],
|
||||
"logoConnection"
|
||||
> & {
|
||||
logo: Image
|
||||
}
|
||||
|
||||
const validateHeaderRefConfigSchema = z.object({
|
||||
const validateCurrentHeaderRefConfigSchema = z.object({
|
||||
all_current_header: z.object({
|
||||
items: z.array(
|
||||
z.object({
|
||||
@@ -133,7 +135,9 @@ const validateHeaderRefConfigSchema = z.object({
|
||||
}),
|
||||
})
|
||||
|
||||
export type HeaderRefDataRaw = z.infer<typeof validateHeaderRefConfigSchema>
|
||||
export type CurrentHeaderRefDataRaw = z.infer<
|
||||
typeof validateCurrentHeaderRefConfigSchema
|
||||
>
|
||||
|
||||
const validateAppDownload = z.object({
|
||||
href: z.string(),
|
||||
|
||||
@@ -18,14 +18,14 @@ import { generateRefsResponseTag, generateTag } from "@/utils/generateTag"
|
||||
import { langInput } from "./input"
|
||||
import {
|
||||
type ContactConfigData,
|
||||
CurrentHeaderData,
|
||||
CurrentHeaderDataRaw,
|
||||
CurrentHeaderRefDataRaw,
|
||||
FooterDataRaw,
|
||||
FooterRefDataRaw,
|
||||
HeaderData,
|
||||
HeaderDataRaw,
|
||||
HeaderRefDataRaw,
|
||||
validateContactConfigSchema,
|
||||
validateCurrentHeaderConfigSchema,
|
||||
validateFooterConfigSchema,
|
||||
validateHeaderConfigSchema,
|
||||
} from "./output"
|
||||
|
||||
const meter = metrics.getMeter("trpc.contentstack.base")
|
||||
@@ -40,21 +40,23 @@ const getContactConfigFailCounter = meter.createCounter(
|
||||
"trpc.contentstack.contactConfig.get-fail"
|
||||
)
|
||||
// OpenTelemetry metrics: Header
|
||||
const getHeaderRefCounter = meter.createCounter(
|
||||
"trpc.contentstack.header.ref.get"
|
||||
const getCurrentHeaderRefCounter = meter.createCounter(
|
||||
"trpc.contentstack.currentHeader.ref.get"
|
||||
)
|
||||
const getHeaderRefSuccessCounter = meter.createCounter(
|
||||
"trpc.contentstack.header.ref.get-success"
|
||||
const getCurrentHeaderRefSuccessCounter = meter.createCounter(
|
||||
"trpc.contentstack.currentHeader.ref.get-success"
|
||||
)
|
||||
const getHeaderRefFailCounter = meter.createCounter(
|
||||
"trpc.contentstack.header.ref.get-fail"
|
||||
const getCurrentHeaderRefFailCounter = meter.createCounter(
|
||||
"trpc.contentstack.currentHeader.ref.get-fail"
|
||||
)
|
||||
const getHeaderCounter = meter.createCounter("trpc.contentstack.header.get")
|
||||
const getHeaderSuccessCounter = meter.createCounter(
|
||||
"trpc.contentstack.header.get-success"
|
||||
const getCurrentHeaderCounter = meter.createCounter(
|
||||
"trpc.contentstack.currentHeader.get"
|
||||
)
|
||||
const getHeaderFailCounter = meter.createCounter(
|
||||
"trpc.contentstack.header.get-fail"
|
||||
const getCurrentHeaderSuccessCounter = meter.createCounter(
|
||||
"trpc.contentstack.currentHeader.get-success"
|
||||
)
|
||||
const getCurrentHeaderFailCounter = meter.createCounter(
|
||||
"trpc.contentstack.currentHeader.get-fail"
|
||||
)
|
||||
// OpenTelemetry metrics: Footer
|
||||
const getFooterRefCounter = meter.createCounter(
|
||||
@@ -138,15 +140,15 @@ export const baseQueryRouter = router({
|
||||
)
|
||||
return validatedContactConfigConfig.data.all_contact_config.items[0]
|
||||
}),
|
||||
header: contentstackBaseProcedure
|
||||
currentHeader: contentstackBaseProcedure
|
||||
.input(langInput)
|
||||
.query(async ({ input }) => {
|
||||
getHeaderRefCounter.add(1, { lang: input.lang })
|
||||
getCurrentHeaderRefCounter.add(1, { lang: input.lang })
|
||||
console.info(
|
||||
"contentstack.header.ref start",
|
||||
"contentstack.currentHeader.ref start",
|
||||
JSON.stringify({ query: { lang: input.lang } })
|
||||
)
|
||||
const responseRef = await request<HeaderRefDataRaw>(
|
||||
const responseRef = await request<CurrentHeaderRefDataRaw>(
|
||||
GetCurrentHeaderRef,
|
||||
{
|
||||
locale: input.lang,
|
||||
@@ -158,9 +160,9 @@ export const baseQueryRouter = router({
|
||||
},
|
||||
}
|
||||
)
|
||||
getHeaderCounter.add(1, { lang: input.lang })
|
||||
getCurrentHeaderCounter.add(1, { lang: input.lang })
|
||||
console.info(
|
||||
"contentstack.header start",
|
||||
"contentstack.currentHeader start",
|
||||
JSON.stringify({
|
||||
query: { lang: input.lang },
|
||||
})
|
||||
@@ -169,7 +171,7 @@ export const baseQueryRouter = router({
|
||||
const currentHeaderUID =
|
||||
responseRef.data.all_current_header.items[0].system.uid
|
||||
// There's currently no error handling/validation for the responseRef, should it be added?
|
||||
const response = await request<HeaderDataRaw>(
|
||||
const response = await request<CurrentHeaderDataRaw>(
|
||||
GetCurrentHeader,
|
||||
{ locale: input.lang },
|
||||
{
|
||||
@@ -182,13 +184,13 @@ export const baseQueryRouter = router({
|
||||
|
||||
if (!response.data) {
|
||||
const notFoundError = notFound(response)
|
||||
getHeaderFailCounter.add(1, {
|
||||
getCurrentHeaderFailCounter.add(1, {
|
||||
lang: input.lang,
|
||||
error_type: "not_found",
|
||||
error: JSON.stringify({ code: notFoundError.code }),
|
||||
})
|
||||
console.error(
|
||||
"contentstack.header not found error",
|
||||
"contentstack.currentHeader not found error",
|
||||
JSON.stringify({
|
||||
query: {
|
||||
lang: input.lang,
|
||||
@@ -199,18 +201,18 @@ export const baseQueryRouter = router({
|
||||
throw notFoundError
|
||||
}
|
||||
|
||||
const validatedHeaderConfig = validateHeaderConfigSchema.safeParse(
|
||||
const validatedHeaderConfig = validateCurrentHeaderConfigSchema.safeParse(
|
||||
response.data
|
||||
)
|
||||
|
||||
if (!validatedHeaderConfig.success) {
|
||||
getHeaderFailCounter.add(1, {
|
||||
getCurrentHeaderFailCounter.add(1, {
|
||||
lang: input.lang,
|
||||
error_type: "validation_error",
|
||||
error: JSON.stringify(validatedHeaderConfig.error),
|
||||
})
|
||||
console.error(
|
||||
"contentstack.header validation error",
|
||||
"contentstack.currentHeader validation error",
|
||||
JSON.stringify({
|
||||
query: {
|
||||
lang: input.lang,
|
||||
@@ -220,9 +222,9 @@ export const baseQueryRouter = router({
|
||||
)
|
||||
return null
|
||||
}
|
||||
getHeaderSuccessCounter.add(1, { lang: input.lang })
|
||||
getCurrentHeaderSuccessCounter.add(1, { lang: input.lang })
|
||||
console.info(
|
||||
"contentstack.header success",
|
||||
"contentstack.currentHeader success",
|
||||
JSON.stringify({
|
||||
query: { lang: input.lang },
|
||||
})
|
||||
@@ -234,7 +236,7 @@ export const baseQueryRouter = router({
|
||||
return {
|
||||
...validatedHeaderConfig.data.all_current_header.items[0],
|
||||
logo,
|
||||
} as HeaderData
|
||||
} as CurrentHeaderData
|
||||
}),
|
||||
footer: contentstackBaseProcedure
|
||||
.input(langInput)
|
||||
|
||||
Reference in New Issue
Block a user