/** Service for business-related API calls */ import { supabase } from '@/supabase' import type { Business } from '@/types' export const businessService = { /** Helper to upload file to supabase storage */ async uploadImage(file: File): Promise { const fileExt = file.name.split('.').pop() const fileName = `${Math.random()}-${Date.now()}.${fileExt}` const filePath = `businesses/${fileName}` const { error } = await supabase.storage.from('uploads').upload(filePath, file) if (error) throw new Error(error.message) const { data } = supabase.storage.from('uploads').getPublicUrl(filePath) return data.publicUrl }, /** Get all businesses */ async getAllBusinesses(): Promise { const { data, error } = await supabase.from('businesses').select('id, name, address, phone, image_url, social_media, category, latitude, longitude, area, description, website, updated_at') if (error) throw new Error(error.message) return data as Business[] }, /** Get a single business by ID */ async getBusiness(id: string): Promise { const { data, error } = await supabase.from('businesses').select('id, name, address, phone, image_url, social_media, category, latitude, longitude, area, description, website, updated_at').eq('id', id).single() if (error) throw new Error(error.message) return data as Business }, /** Create a new business */ async createBusiness(businessData: FormData): Promise { const payload: any = {} let fileUpload: File | null = null businessData.forEach((value, key) => { if ((key === 'file' || key === 'image') && value instanceof File) { fileUpload = value } else if (value !== 'null' && value !== '' && key !== 'file' && key !== 'image') { payload[key] = value } }) if (fileUpload) { payload.image_url = await this.uploadImage(fileUpload) } const { data, error } = await supabase.from('businesses').insert([payload]).select().single() if (error) throw new Error(error.message) return data as Business }, /** Update an existing business */ async updateBusiness(id: string, businessData: FormData): Promise { const payload: any = {} let fileUpload: File | null = null businessData.forEach((value, key) => { if ((key === 'file' || key === 'image') && value instanceof File) { fileUpload = value } else if (value !== 'null' && value !== '' && key !== 'file' && key !== 'image') { payload[key] = value } }) if (fileUpload) { payload.image_url = await this.uploadImage(fileUpload) } const { data, error } = await supabase.from('businesses').update(payload).eq('id', id).select().single() if (error) throw new Error(error.message) return data as Business }, /** Delete a business */ async deleteBusiness(id: string): Promise { const { error } = await supabase.from('businesses').delete().eq('id', id) if (error) throw new Error(error.message) }, }