Spaces:
Running
Running
File size: 1,425 Bytes
962a395 954e0aa 962a395 dc64ef1 962a395 dc64ef1 86a47ea dc64ef1 37bcb58 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | 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}") |