From c63a348e6b7dce4aafe370fe86c7ba84c95aae88 Mon Sep 17 00:00:00 2001 From: robin Date: Thu, 18 Dec 2025 20:35:38 +0100 Subject: [PATCH] fix: add defensive fallbacks for missing database relationships --- dockerfile | 3 +++ src/app/bottles/[id]/page.tsx | 24 +++++++++++++++++++++++- src/components/SessionList.tsx | 18 ++++++++++++++++++ 3 files changed, 44 insertions(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index 76b59c5..0ae76b4 100644 --- a/dockerfile +++ b/dockerfile @@ -21,10 +21,13 @@ COPY . . # Wir müssen die Variablen als Build-Argumente definieren ARG NEXT_PUBLIC_SUPABASE_URL ARG NEXT_PUBLIC_SUPABASE_ANON_KEY +ARG GEMINI_API_KEY # Und sie als Environment-Variablen für den Build-Prozess setzen ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY +ENV GEMINI_API_KEY=$GEMINI_API_KEY + # --- NEU HINZUFÜGEN: ENDE --- ENV NEXT_TELEMETRY_DISABLED 1 diff --git a/src/app/bottles/[id]/page.tsx b/src/app/bottles/[id]/page.tsx index bc7132e..69bc618 100644 --- a/src/app/bottles/[id]/page.tsx +++ b/src/app/bottles/[id]/page.tsx @@ -39,7 +39,7 @@ export default async function BottlePage({ notFound(); } - const { data: tastings } = await supabase + const tastingsResult = await supabase .from('tastings') .select(` *, @@ -57,6 +57,28 @@ export default async function BottlePage({ .eq('bottle_id', params.id) .order('created_at', { ascending: false }); + let tastings = tastingsResult.data; + + if (tastingsResult.error) { + console.error('Error fetching tastings with sessions:', tastingsResult.error); + // Fallback: try without session join if relationship is missing + const fallbackResult = await supabase + .from('tastings') + .select(` + *, + tasting_tags ( + buddies ( + id, + name + ) + ) + `) + .eq('bottle_id', params.id) + .order('created_at', { ascending: false }); + + tastings = fallbackResult.data; + } + return (
diff --git a/src/components/SessionList.tsx b/src/components/SessionList.tsx index aab205e..62d77eb 100644 --- a/src/components/SessionList.tsx +++ b/src/components/SessionList.tsx @@ -40,6 +40,24 @@ export default function SessionList() { if (error) { console.error('Error fetching sessions:', error); + // Fallback: try without tastings join if relationship is missing + const { data: fallbackData, error: fallbackError } = await supabase + .from('tasting_sessions') + .select(` + *, + session_participants (count) + `) + .order('scheduled_at', { ascending: false }); + + if (fallbackError) { + console.error('Error fetching sessions fallback:', fallbackError); + } else { + setSessions(fallbackData.map(s => ({ + ...s, + participant_count: s.session_participants[0]?.count || 0, + whisky_count: 0 + })) || []); + } } else { setSessions(data.map(s => ({ ...s,