import { supabaseAdmin } from "./supabase" import type { Database } from "./supabase" type BusinessRow = Database["public"]["Tables"]["businesses"]["Row"] type BusinessInsert = Database["public"]["Tables"]["businesses"]["Insert"] type UserBusinessRow = Database["public"]["Tables"]["user_business"]["Row"] type UserBusinessInsert = Database["public"]["Tables"]["user_business"]["Insert"] type AccountAuthRow = Database["public"]["Tables"]["account_authorizations"]["Row"] type AccountAuthInsert = Database["public"]["Tables"]["account_authorizations"]["Insert"] function getClient() { if (!supabaseAdmin) { throw new Error("SUPABASE_SERVICE_ROLE_KEY is not set; cannot access admin tables") } return supabaseAdmin } export const businessService = { async list(): Promise { const { data, error } = await getClient() .from("businesses") .select("*") .order("name") if (error) throw error return data ?? [] }, async create(row: BusinessInsert): Promise { const { data, error } = await getClient() .from("businesses") .insert(row) .select() .single() if (error) throw error return data }, async getById(businessId: number): Promise { const { data, error } = await getClient() .from("businesses") .select("*") .eq("business_id", businessId) .single() if (error) { if (error.code === "PGRST116") return null throw error } return data }, } export const userBusinessService = { async listByBusinessId(businessId: number): Promise { const { data, error } = await getClient() .from("user_business") .select("*") .eq("business_id", businessId) if (error) throw error return data ?? [] }, async add(row: UserBusinessInsert): Promise { const { data, error } = await getClient() .from("user_business") .insert(row) .select() .single() if (error) throw error return data }, } export const accountAuthorizationService = { async list(filters?: { business_id?: number; user_id?: number }): Promise { let q = getClient() .from("account_authorizations") .select("*") .order("created_at", { ascending: false }) if (filters?.business_id != null) { q = q.eq("business_id", filters.business_id) } if (filters?.user_id != null) { q = q.eq("user_id", filters.user_id) } const { data, error } = await q if (error) throw error return data ?? [] }, async add(row: AccountAuthInsert): Promise { const { data, error } = await getClient() .from("account_authorizations") .insert(row) .select() .single() if (error) throw error return data }, async deleteById(id: number): Promise { const { error } = await getClient() .from("account_authorizations") .delete() .eq("id", id) if (error) throw error }, async getById(id: number): Promise { const { data, error } = await getClient() .from("account_authorizations") .select("*") .eq("id", id) .single() if (error) { if (error.code === "PGRST116") return null throw error } return data }, }