import { DocumentNode, print } from "graphql" import { Lang } from "@/constants/languages" import { env } from "@/env/server" 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 result = await fetch(env.CMS_URL, { method: "POST", headers: { access_token: env.CMS_ACCESS_TOKEN, "Content-Type": "application/json", }, body: JSON.stringify({ query: print(ResolveEntryByUrl as DocumentNode), variables: { locale: lang, url, }, }), }) const { data } = await result.json() const validatedData = validateEntryResolveSchema.safeParse(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, } }