Files
web/utils/entry.ts
2024-08-28 14:55:31 +02:00

43 lines
1010 B
TypeScript

import { Lang } from "@/constants/languages"
import { edgeRequest } from "@/lib/graphql/edgeRequest"
import { ResolveEntryByUrl } from "@/lib/graphql/Query/ResolveEntry.graphql"
import { internalServerError } from "@/server/errors/next"
import { validateEntryResolveSchema } from "@/types/requests/entry"
export async function resolve(url: string, lang = Lang.en) {
const response = await edgeRequest(
ResolveEntryByUrl,
{
locale: lang,
url,
},
{
next: {
revalidate: 3600,
},
}
)
const validatedData = validateEntryResolveSchema.safeParse(response.data)
if (!validatedData.success) {
throw internalServerError(validatedData.error)
}
for (const value of Object.values(validatedData.data)) {
if (value.total) {
const { content_type_uid, uid } = value.items[0].system
return {
contentType: content_type_uid.replaceAll("_", "-"),
uid,
}
}
}
return {
contentType: null,
uid: null,
}
}