41 lines
985 B
TypeScript
41 lines
985 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,
|
|
},
|
|
{
|
|
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,
|
|
}
|
|
}
|