import supabase from './supabase'; // Define response type for API export interface ApiResponse { success: boolean; data?: T; error?: string; message?: string; } // Common function for authenticated API requests to LIMQ export async function limqRequest( endpoint: string, method: 'GET' | 'POST' | 'PUT' | 'DELETE' = 'GET', data?: Record ): Promise> { // Get current session const { data: { session } } = await supabase.auth.getSession(); if (!session) { throw new Error('No active session. User must be authenticated.'); } const baseUrl = process.env.NEXT_PUBLIC_LIMQ_API; const url = `${baseUrl}${endpoint.startsWith('/') ? endpoint : '/' + endpoint}`; const options: RequestInit = { method, headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${session.access_token}` }, mode: 'cors' }; if (data && (method === 'POST' || method === 'PUT')) { options.body = JSON.stringify(data); } const response = await fetch(url, options); if (!response.ok) { const errorData = await response.json().catch(() => null); throw new Error( errorData?.error || `Request failed with status ${response.status}` ); } return response.json(); }