fix: fallback to basic select query when cover_url column is not present on production database
This commit is contained in:
@@ -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 (
|
||||||
|
|||||||
Reference in New Issue
Block a user