From 067d65940f471a68be68897d9d7fe114e88b656e Mon Sep 17 00:00:00 2001 From: AyrisAI Date: Thu, 20 Aug 2026 17:10:19 +0300 Subject: [PATCH] fix: fallback to basic select query when cover_url column is not present on production database --- apps/web/src/app/menu/[slug]/page.tsx | 51 +++++++++++++++++---------- 1 file changed, 33 insertions(+), 18 deletions(-) diff --git a/apps/web/src/app/menu/[slug]/page.tsx b/apps/web/src/app/menu/[slug]/page.tsx index 4f66972..5c6e9ac 100644 --- a/apps/web/src/app/menu/[slug]/page.tsx +++ b/apps/web/src/app/menu/[slug]/page.tsx @@ -68,34 +68,49 @@ export async function generateMetadata({ params }: PageProps): Promise }; } -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 (