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) {
|
||||
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 (domainRow?.restaurants) {
|
||||
restaurant = domainRow.restaurants;
|
||||
if (domErr && domErr.code === "42703") {
|
||||
const { data: fallbackDom } = await supabase
|
||||
.from("domains")
|
||||
.select("restaurant_id, restaurants(id, name, slug, logo_url, phone, address)")
|
||||
.eq("hostname", slug)
|
||||
.maybeSingle();
|
||||
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 (
|
||||
|
||||
Reference in New Issue
Block a user