fix: fallback to basic select query when cover_url column is not present on production database

This commit is contained in:
AyrisAI
2026-08-20 17:10:19 +03:00
parent b7e128fb8c
commit 067d65940f
+33 -18
View File
@@ -68,34 +68,49 @@ export async function generateMetadata({ params }: PageProps): Promise<Metadata>
};
}
export default async function PublicMenuPage({ params, searchParams }: PageProps) {
const { slug } = await params;
const resolvedSearchParams = searchParams ? await searchParams : {};
const themeParam = resolvedSearchParams.theme;
// 1. Try finding restaurant by slug
let restaurant: any = null;
const { data: bySlug } = await supabase
async function fetchRestaurantBySlug(slug: string) {
let { data: bySlug, error } = await supabase
.from("restaurants")
.select("id, name, slug, logo_url, cover_url, phone, address")
.eq("slug", slug)
.maybeSingle();
if (bySlug) {
restaurant = bySlug;
} else {
// 2. Try finding restaurant by custom domain hostname
const { data: domainRow } = await supabase
if (error && error.code === "42703") {
const { data: fallback } = await supabase
.from("restaurants")
.select("id, name, slug, logo_url, phone, address")
.eq("slug", slug)
.maybeSingle();
bySlug = fallback;
}
if (bySlug) return bySlug;
let { data: domainRow, error: domErr } = await supabase
.from("domains")
.select("restaurant_id, restaurants(id, name, slug, logo_url, cover_url, phone, address)")
.eq("hostname", slug)
.maybeSingle();
if (domErr && domErr.code === "42703") {
const { data: fallbackDom } = await supabase
.from("domains")
.select("restaurant_id, restaurants(id, name, slug, logo_url, cover_url, phone, address)")
.select("restaurant_id, restaurants(id, name, slug, logo_url, phone, address)")
.eq("hostname", slug)
.maybeSingle();
if (domainRow?.restaurants) {
restaurant = domainRow.restaurants;
}
domainRow = fallbackDom;
}
return (domainRow?.restaurants as any) ?? null;
}
export default async function PublicMenuPage({ params, searchParams }: PageProps) {
const { slug } = await params;
const resolvedSearchParams = searchParams ? await searchParams : {};
const themeParam = resolvedSearchParams.theme;
const restaurant: any = await fetchRestaurantBySlug(slug);
if (!restaurant) {
if (slug === "demo" || slug === "gusto-brasserie") {
return (