chatbot / src /db /supabase_client.py
jawadsaghir12's picture
Add application file
a8a2cf5
"""
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
@lru_cache()
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()