36 lines
981 B
TypeScript
36 lines
981 B
TypeScript
import { Lang } from "@/constants/languages"
|
|
import { request } from "@/lib/graphql/request"
|
|
import { internalServerError, notFound } from "@/server/errors/trpc"
|
|
|
|
import { getMetaDataSchema, Page } from "./output"
|
|
|
|
export type Variables = {
|
|
locale: Lang
|
|
url: string
|
|
}
|
|
|
|
export async function getResponse<T>(query: string, variables: Variables) {
|
|
const response = await request<T>(query, variables)
|
|
if (!response.data) {
|
|
throw notFound(response)
|
|
}
|
|
|
|
return response
|
|
}
|
|
|
|
export function getMetaData(page: Page) {
|
|
const pageMetaData = {
|
|
breadcrumbsTitle: page.web.breadcrumbs.title,
|
|
title: page.web.seo_metadata.title,
|
|
description: page.web.seo_metadata.description,
|
|
imageConnection: page.web.seo_metadata.imageConnection,
|
|
uid: page.system.uid,
|
|
}
|
|
const validatedMetaData = getMetaDataSchema.safeParse(pageMetaData)
|
|
if (!validatedMetaData.success) {
|
|
throw internalServerError(validatedMetaData.error)
|
|
}
|
|
|
|
return validatedMetaData.data
|
|
}
|