Spaces:
Running
Running
| from typing import Optional | |
| from loguru import logger | |
| from supabase import Client, create_client | |
| from src.config import settings | |
| # Singletons — created once, reused on every request | |
| _supabase_client: Optional[Client] = None | |
| _auth_supabase_client: Optional[Client] = None | |
| def get_supabase() -> Optional[Client]: | |
| global _supabase_client | |
| if _supabase_client is None: | |
| if not settings.supabase_url or not settings.supabase_key: | |
| return None | |
| _supabase_client = create_client(settings.supabase_url, settings.supabase_key) | |
| return _supabase_client | |
| def get_auth_supabase() -> Optional[Client]: | |
| global _auth_supabase_client | |
| if _auth_supabase_client is None: | |
| if not settings.supabase_url or not settings.supabase_anon_key: | |
| return None | |
| _auth_supabase_client = create_client(settings.supabase_url, settings.supabase_anon_key) | |
| return _auth_supabase_client | |
| def warmup_database() -> None: | |
| """Eagerly instantiate Supabase clients and pre-warm TLS connections during server boot.""" | |
| db_client = get_supabase() | |
| get_auth_supabase() | |
| if db_client: | |
| try: | |
| db_client.table("profiles").select("id").limit(1).execute() | |
| logger.info("Supabase database connection warmed up successfully.") | |
| except Exception as e: | |
| logger.warning(f"Database warmup query failed (safe to ignore if offline/testing): {e}") |