feat(WEB-209): revalidate my pages navigation on demand
This commit is contained in:
committed by
Michael Zetterberg
parent
16634abbbf
commit
1bffbc837e
127
server/routers/contentstack/myPages/navigation/output.ts
Normal file
127
server/routers/contentstack/myPages/navigation/output.ts
Normal file
@@ -0,0 +1,127 @@
|
||||
import { z } from "zod"
|
||||
|
||||
import { Lang } from "@/constants/languages"
|
||||
|
||||
import { PageLinkEnum } from "@/types/requests/myPages/navigation"
|
||||
|
||||
const pageConnection = z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: z.object({
|
||||
__typename: z.nativeEnum(PageLinkEnum),
|
||||
system: z.object({
|
||||
locale: z.nativeEnum(Lang),
|
||||
uid: z.string(),
|
||||
}),
|
||||
title: z.string(),
|
||||
url: z.string(),
|
||||
}),
|
||||
})
|
||||
),
|
||||
})
|
||||
|
||||
const pageConnectionRefs = z.object({
|
||||
edges: z.array(
|
||||
z.object({
|
||||
node: z.object({
|
||||
__typename: z.nativeEnum(PageLinkEnum),
|
||||
system: z.object({
|
||||
content_type_uid: z.string(),
|
||||
uid: z.string(),
|
||||
}),
|
||||
}),
|
||||
})
|
||||
),
|
||||
})
|
||||
|
||||
export const navigationRefsPayloadSchema = z.object({
|
||||
all_navigation_my_pages: z.object({
|
||||
items: z
|
||||
.array(
|
||||
z.object({
|
||||
items: z.array(
|
||||
z.object({
|
||||
__typename: z.string(),
|
||||
item: z.object({
|
||||
sub_items: z.array(
|
||||
z.object({
|
||||
__typename: z.string(),
|
||||
item: z.object({
|
||||
pageConnection: pageConnectionRefs,
|
||||
}),
|
||||
})
|
||||
),
|
||||
pageConnection: pageConnectionRefs,
|
||||
}),
|
||||
})
|
||||
),
|
||||
system: z.object({
|
||||
content_type_uid: z.string(),
|
||||
uid: z.string(),
|
||||
}),
|
||||
})
|
||||
)
|
||||
.refine(
|
||||
(input) => {
|
||||
return input.length === 1
|
||||
},
|
||||
{
|
||||
message: `Expected navigationRefsPayloadSchema 1 all_navigation_my_pages item`,
|
||||
}
|
||||
),
|
||||
}),
|
||||
})
|
||||
|
||||
export const navigationPayloadSchema = z.object({
|
||||
all_navigation_my_pages: z.object({
|
||||
items: z
|
||||
.array(
|
||||
z.object({
|
||||
items: z.array(
|
||||
z.object({
|
||||
item: z.object({
|
||||
link_text: z.string().default(""),
|
||||
pageConnection,
|
||||
sub_items: z.array(
|
||||
z.object({
|
||||
item: z.object({
|
||||
link_text: z.string().default(""),
|
||||
pageConnection,
|
||||
}),
|
||||
})
|
||||
),
|
||||
}),
|
||||
})
|
||||
),
|
||||
title: z.string(),
|
||||
})
|
||||
)
|
||||
.refine(
|
||||
(input) => {
|
||||
return input.length === 1
|
||||
},
|
||||
{
|
||||
message: `Expected navigationPayloadSchema to containt 1 all_navigation_my_pages item`,
|
||||
}
|
||||
),
|
||||
}),
|
||||
})
|
||||
|
||||
const baseMenuItem = z.object({
|
||||
lang: z.nativeEnum(Lang),
|
||||
linkText: z.string(),
|
||||
uid: z.string(),
|
||||
url: z.string(),
|
||||
originalUrl: z.string().optional(),
|
||||
})
|
||||
|
||||
export const getNavigationSchema = z.object({
|
||||
items: z.array(
|
||||
z
|
||||
.object({
|
||||
subItems: z.array(baseMenuItem),
|
||||
})
|
||||
.merge(baseMenuItem)
|
||||
),
|
||||
title: z.string(),
|
||||
})
|
||||
Reference in New Issue
Block a user