import { SupabaseClient } from '@supabase/supabase-js'; import { cache } from 'react'; export const getUser = cache(async (supabase: SupabaseClient) => { const { data: { user } } = await supabase.auth.getUser(); return user; }); export const getSubscription = cache(async (supabase: SupabaseClient) => { const { data: subscription, error } = await supabase .from('subscriptions') .select('*, prices(*, products(*))') .in('status', ['trialing', 'active']) .maybeSingle(); return subscription; }); export const getProducts = cache(async (supabase: SupabaseClient) => { const { data: products, error } = await supabase .from('products') .select('*, prices(*)') .eq('active', true) .eq('prices.active', true) .order('metadata->index') .order('unit_amount', { referencedTable: 'prices' }); return products; }); export const getUserDetails = cache(async (supabase: SupabaseClient) => { const { data: userDetails } = await supabase .from('users') .select('*') .single(); return userDetails; }); export const getUserRole = cache(async (supabase: SupabaseClient, userId: string) => { const { data: userRole } = await supabase .from('user_roles') .select('role') .eq('user_id', userId) .single(); return userRole?.role || null; });