Files
web/server/routers/contentstack/metadata/utils.ts

35 lines
931 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 = {
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
}