Spaces:
Running
Running
| """ | |
| Supabase client for interacting with Supabase services. | |
| This provides access to: | |
| - Storage (file uploads) | |
| - Auth (alternative authentication) | |
| - Realtime (subscriptions) | |
| - Edge Functions | |
| - PostgREST API (alternative to SQLModel for certain operations) | |
| """ | |
| from supabase import create_client, Client | |
| from functools import lru_cache | |
| from ..core.config.config import get_settings | |
| def get_supabase_client() -> Client: | |
| """ | |
| Create and cache a Supabase client instance. | |
| Returns: | |
| Client: Supabase client for API operations | |
| """ | |
| settings = get_settings() | |
| if not settings.SUPABASE_URL or not settings.SUPABASE_API_KEY: | |
| raise ValueError( | |
| "SUPABASE_URL and SUPABASE_API_KEY must be set in environment variables" | |
| ) | |
| supabase: Client = create_client( | |
| settings.SUPABASE_URL, | |
| settings.SUPABASE_API_KEY | |
| ) | |
| return supabase | |
| # Convenience function for dependency injection in FastAPI | |
| def get_supabase() -> Client: | |
| """ | |
| Dependency for FastAPI routes to get Supabase client. | |
| Usage: | |
| @app.get("/example") | |
| async def example(supabase: Client = Depends(get_supabase)): | |
| # Use supabase client here | |
| pass | |
| """ | |
| return get_supabase_client() | |