diff --git a/services/supabase.ts b/services/supabase.ts index 0fed02e..21b51ab 100644 --- a/services/supabase.ts +++ b/services/supabase.ts @@ -1,10 +1,20 @@ -import { createClient } from '@supabase/supabase-js'; +import { createClient, SupabaseClient } from '@supabase/supabase-js'; const supabaseUrl = process.env.SUPABASE_URL || ''; const supabaseAnonKey = process.env.SUPABASE_ANON_KEY || ''; -export const supabase = createClient(supabaseUrl, supabaseAnonKey); +let _client: SupabaseClient | null = null; + +const getClient = (): SupabaseClient => { + if (!_client) { + if (!supabaseUrl || !supabaseAnonKey) { + throw new Error('Supabase credentials not configured. Add SUPABASE_URL and SUPABASE_ANON_KEY to environment variables.'); + } + _client = createClient(supabaseUrl, supabaseAnonKey); + } + return _client; +}; export interface VendorDailyRow { id?: number; @@ -40,7 +50,7 @@ export const fetchVendorData = async (filters: VendorFilters): Promise => { - const { data: marketData } = await supabase + const client = getClient(); + + const { data: marketData } = await client .from('vendor_daily_data') .select('market'); - const { data: tagData } = await supabase + const { data: tagData } = await client .from('vendor_daily_data') .select('tags'); - const { data: dateMin } = await supabase + const { data: dateMin } = await client .from('vendor_daily_data') .select('date') .order('date', { ascending: true }) .limit(1); - const { data: dateMax } = await supabase + const { data: dateMax } = await client .from('vendor_daily_data') .select('date') .order('date', { ascending: false })