improve graphql error handling

This commit is contained in:
2024-08-14 22:13:49 +02:00
parent 137a8c0b2f
commit 27477de14e
11 changed files with 175 additions and 61 deletions

View File

@@ -30,11 +30,16 @@ export async function generateStaticParams() {
`);
const { data, error } = await getClient().query(allNewsSlugsQuery, {});
if (data === undefined || error) {
throw new Error("failed to generate static params");
if (error) {
throw new Error(error.message);
}
if (!data?.pages) {
throw new Error(
"Failed to generate static params for subpages of /aktuelt"
);
}
return data?.pages.map((page: any) => ({
return data.pages.map((page: any) => ({
slug: page.slug,
}));
}
@@ -46,12 +51,13 @@ export async function generateMetadata(
const { data, error } = await getClient().query(newsBySlugQuery, {
slug: params.slug,
});
const news = (data?.news ?? []) as NewsFragment[];
if (!news) {
if (error) {
throw new Error(error.message);
}
if (!data?.news) {
return null;
}
const news = data.news as NewsFragment;
const metadata = await getSeoMetadata(news, parent);
return metadata;
}
@@ -61,13 +67,15 @@ export default async function Page({ params }: { params: { slug: string } }) {
slug: params.slug,
});
if (data?.news === null || error) {
if (error) {
throw new Error(error.message);
}
if (!data?.news) {
return notFound();
}
const news = (data?.news ?? {}) as NewsFragment;
const news = data?.news as NewsFragment;
const featuredImage: any = news.featuredImage;
return (
<main className="site-main" id="main">
<section className="news-header">

View File

@@ -10,20 +10,25 @@ export async function generateMetadata(
parent: ResolvingMetadata
): Promise<Metadata | null> {
const { data, error } = await getClient().query(newsQuery, {});
const index = (data?.index ?? []) as NewsIndexFragment;
if (!index) {
if (error) {
throw new Error(error.message);
}
if (!data?.index) {
return null;
}
const index = data.index as NewsIndexFragment;
const metadata = await getSeoMetadata(index, parent);
return metadata;
}
export default async function Page() {
const { data, error } = await getClient().query(newsQuery, {});
if (error) {
throw new Error(error.message);
}
const news = (data?.news ?? []) as NewsFragment[];
const index = (data?.index ?? []) as NewsIndexFragment;
const index = data?.index as NewsIndexFragment;
return (
<main className="site-main" id="main">