axiom-engine-api / app /core /database.py
EATosin's picture
Axiom V4.6: Production-Locked. Multilingual Neural Core Operational.
f775c99
import os
import threading
from typing import Optional
from supabase import create_client, Client
class Database:
"""
SOTA Thread-Safe Singleton for Supabase.
Optimized for high-concurrency async background tasks.
"""
_instance: Optional['Database'] = None
_lock = threading.Lock()
client: Optional[Client] = None
def __new__(cls) -> 'Database':
if cls._instance is None:
with cls._lock:
if cls._instance is None:
cls._instance = super(Database, cls).__new__(cls)
cls._instance._init_client()
return cls._instance
def _init_client(self) -> None:
url = os.environ.get("SUPABASE_URL")
key = os.environ.get("SUPABASE_SERVICE_KEY")
if not url or not key:
print("⚠️ CRITICAL: Supabase credentials missing. Vault features will be disabled.")
return
try:
# SOTA: Initializing the Master Service Client
self.client = create_client(url, key)
print("AXIOM-CORE: Vault Database Connection Established.")
except Exception as e:
print(f"❌ DATABASE INIT ERROR: {e}")
# Global Accessor
# Initialized once at module load, but shielded by the Singleton logic.
_db_manager = Database()
db: Optional[Client] = _db_manager.client