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) { async function fetchRestaurantBySlug(slug: string) {
const { slug } = await params; let { data: bySlug, error } = await supabase
const resolvedSearchParams = searchParams ? await searchParams : {};
const themeParam = resolvedSearchParams.theme;
// 1. Try finding restaurant by slug
let restaurant: any = null;
const { data: bySlug } = await supabase
.from("restaurants") .from("restaurants")
.select("id, name, slug, logo_url, cover_url, phone, address") .select("id, name, slug, logo_url, cover_url, phone, address")
.eq("slug", slug) .eq("slug", slug)
.maybeSingle(); .maybeSingle();
if (bySlug) { if (error && error.code === "42703") {
restaurant = bySlug; const { data: fallback } = await supabase
} else { .from("restaurants")
// 2. Try finding restaurant by custom domain hostname .select("id, name, slug, logo_url, phone, address")
const { data: domainRow } = await supabase .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") .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) .eq("hostname", slug)
.maybeSingle(); .maybeSingle();
domainRow = fallbackDom;
if (domainRow?.restaurants) {
restaurant = domainRow.restaurants;
}
} }
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 (!restaurant) {
if (slug === "demo" || slug === "gusto-brasserie") { if (slug === "demo" || slug === "gusto-brasserie") {
return ( return (