feat(SW-186): changed name existing header query to currentHeader query and all related types

This commit is contained in:
Erik Tiekstra
2024-08-26 13:58:33 +02:00
parent 0d27f753ed
commit 1aff87f1a1
3 changed files with 43 additions and 37 deletions

View File

@@ -17,7 +17,7 @@ export default async function Header({
languageSwitcher: React.ReactNode languageSwitcher: React.ReactNode
myPagesMobileDropdown: React.ReactNode myPagesMobileDropdown: React.ReactNode
}) { }) {
const data = await serverClient().contentstack.base.header({ const data = await serverClient().contentstack.base.currentHeader({
lang: getLang(), lang: getLang(),
}) })

View File

@@ -62,7 +62,7 @@ export type ContactFields = {
footnote: string | null footnote: string | null
} }
export const validateHeaderConfigSchema = z.object({ export const validateCurrentHeaderConfigSchema = z.object({
all_current_header: z.object({ all_current_header: z.object({
items: z.array( items: z.array(
z.object({ 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< export type CurrentHeaderData = Omit<
HeaderDataRaw["all_current_header"]["items"][0], CurrentHeaderDataRaw["all_current_header"]["items"][0],
"logoConnection" "logoConnection"
> & { > & {
logo: Image logo: Image
} }
const validateHeaderRefConfigSchema = z.object({ const validateCurrentHeaderRefConfigSchema = z.object({
all_current_header: z.object({ all_current_header: z.object({
items: z.array( items: z.array(
z.object({ 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({ const validateAppDownload = z.object({
href: z.string(), href: z.string(),

View File

@@ -18,14 +18,14 @@ import { generateRefsResponseTag, generateTag } from "@/utils/generateTag"
import { langInput } from "./input" import { langInput } from "./input"
import { import {
type ContactConfigData, type ContactConfigData,
CurrentHeaderData,
CurrentHeaderDataRaw,
CurrentHeaderRefDataRaw,
FooterDataRaw, FooterDataRaw,
FooterRefDataRaw, FooterRefDataRaw,
HeaderData,
HeaderDataRaw,
HeaderRefDataRaw,
validateContactConfigSchema, validateContactConfigSchema,
validateCurrentHeaderConfigSchema,
validateFooterConfigSchema, validateFooterConfigSchema,
validateHeaderConfigSchema,
} from "./output" } from "./output"
const meter = metrics.getMeter("trpc.contentstack.base") const meter = metrics.getMeter("trpc.contentstack.base")
@@ -40,21 +40,23 @@ const getContactConfigFailCounter = meter.createCounter(
"trpc.contentstack.contactConfig.get-fail" "trpc.contentstack.contactConfig.get-fail"
) )
// OpenTelemetry metrics: Header // OpenTelemetry metrics: Header
const getHeaderRefCounter = meter.createCounter( const getCurrentHeaderRefCounter = meter.createCounter(
"trpc.contentstack.header.ref.get" "trpc.contentstack.currentHeader.ref.get"
) )
const getHeaderRefSuccessCounter = meter.createCounter( const getCurrentHeaderRefSuccessCounter = meter.createCounter(
"trpc.contentstack.header.ref.get-success" "trpc.contentstack.currentHeader.ref.get-success"
) )
const getHeaderRefFailCounter = meter.createCounter( const getCurrentHeaderRefFailCounter = meter.createCounter(
"trpc.contentstack.header.ref.get-fail" "trpc.contentstack.currentHeader.ref.get-fail"
) )
const getHeaderCounter = meter.createCounter("trpc.contentstack.header.get") const getCurrentHeaderCounter = meter.createCounter(
const getHeaderSuccessCounter = meter.createCounter( "trpc.contentstack.currentHeader.get"
"trpc.contentstack.header.get-success"
) )
const getHeaderFailCounter = meter.createCounter( const getCurrentHeaderSuccessCounter = meter.createCounter(
"trpc.contentstack.header.get-fail" "trpc.contentstack.currentHeader.get-success"
)
const getCurrentHeaderFailCounter = meter.createCounter(
"trpc.contentstack.currentHeader.get-fail"
) )
// OpenTelemetry metrics: Footer // OpenTelemetry metrics: Footer
const getFooterRefCounter = meter.createCounter( const getFooterRefCounter = meter.createCounter(
@@ -138,15 +140,15 @@ export const baseQueryRouter = router({
) )
return validatedContactConfigConfig.data.all_contact_config.items[0] return validatedContactConfigConfig.data.all_contact_config.items[0]
}), }),
header: contentstackBaseProcedure currentHeader: contentstackBaseProcedure
.input(langInput) .input(langInput)
.query(async ({ input }) => { .query(async ({ input }) => {
getHeaderRefCounter.add(1, { lang: input.lang }) getCurrentHeaderRefCounter.add(1, { lang: input.lang })
console.info( console.info(
"contentstack.header.ref start", "contentstack.currentHeader.ref start",
JSON.stringify({ query: { lang: input.lang } }) JSON.stringify({ query: { lang: input.lang } })
) )
const responseRef = await request<HeaderRefDataRaw>( const responseRef = await request<CurrentHeaderRefDataRaw>(
GetCurrentHeaderRef, GetCurrentHeaderRef,
{ {
locale: input.lang, 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( console.info(
"contentstack.header start", "contentstack.currentHeader start",
JSON.stringify({ JSON.stringify({
query: { lang: input.lang }, query: { lang: input.lang },
}) })
@@ -169,7 +171,7 @@ export const baseQueryRouter = router({
const currentHeaderUID = const currentHeaderUID =
responseRef.data.all_current_header.items[0].system.uid responseRef.data.all_current_header.items[0].system.uid
// There's currently no error handling/validation for the responseRef, should it be added? // 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, GetCurrentHeader,
{ locale: input.lang }, { locale: input.lang },
{ {
@@ -182,13 +184,13 @@ export const baseQueryRouter = router({
if (!response.data) { if (!response.data) {
const notFoundError = notFound(response) const notFoundError = notFound(response)
getHeaderFailCounter.add(1, { getCurrentHeaderFailCounter.add(1, {
lang: input.lang, lang: input.lang,
error_type: "not_found", error_type: "not_found",
error: JSON.stringify({ code: notFoundError.code }), error: JSON.stringify({ code: notFoundError.code }),
}) })
console.error( console.error(
"contentstack.header not found error", "contentstack.currentHeader not found error",
JSON.stringify({ JSON.stringify({
query: { query: {
lang: input.lang, lang: input.lang,
@@ -199,18 +201,18 @@ export const baseQueryRouter = router({
throw notFoundError throw notFoundError
} }
const validatedHeaderConfig = validateHeaderConfigSchema.safeParse( const validatedHeaderConfig = validateCurrentHeaderConfigSchema.safeParse(
response.data response.data
) )
if (!validatedHeaderConfig.success) { if (!validatedHeaderConfig.success) {
getHeaderFailCounter.add(1, { getCurrentHeaderFailCounter.add(1, {
lang: input.lang, lang: input.lang,
error_type: "validation_error", error_type: "validation_error",
error: JSON.stringify(validatedHeaderConfig.error), error: JSON.stringify(validatedHeaderConfig.error),
}) })
console.error( console.error(
"contentstack.header validation error", "contentstack.currentHeader validation error",
JSON.stringify({ JSON.stringify({
query: { query: {
lang: input.lang, lang: input.lang,
@@ -220,9 +222,9 @@ export const baseQueryRouter = router({
) )
return null return null
} }
getHeaderSuccessCounter.add(1, { lang: input.lang }) getCurrentHeaderSuccessCounter.add(1, { lang: input.lang })
console.info( console.info(
"contentstack.header success", "contentstack.currentHeader success",
JSON.stringify({ JSON.stringify({
query: { lang: input.lang }, query: { lang: input.lang },
}) })
@@ -234,7 +236,7 @@ export const baseQueryRouter = router({
return { return {
...validatedHeaderConfig.data.all_current_header.items[0], ...validatedHeaderConfig.data.all_current_header.items[0],
logo, logo,
} as HeaderData } as CurrentHeaderData
}), }),
footer: contentstackBaseProcedure footer: contentstackBaseProcedure
.input(langInput) .input(langInput)