Spaces:
Sleeping
Sleeping
File size: 2,179 Bytes
d95bc83 c1adf10 3d015cd d95bc83 2a317a3 c1adf10 2a317a3 d95bc83 2a317a3 f9c18ef 2a317a3 c1adf10 2a317a3 d95bc83 2a317a3 c1adf10 d95bc83 c1adf10 2a317a3 d95bc83 2a317a3 c1adf10 2a317a3 3d015cd d95bc83 2a317a3 d95bc83 2a317a3 c1adf10 2a317a3 c1adf10 2a317a3 f9c18ef d95bc83 | 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 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | """Database connection - Storage Bucket with Local fallback"""
import os
from config import Config
# Storage mode: 'storage_bucket' or 'local'
STORAGE_MODE = None
_db_client = None
_db_error: str = None
def _init_storage_bucket():
"""Try to initialize Supabase Storage Bucket DB"""
global STORAGE_MODE, _db_client, _db_error
supabase_url = Config.SUPABASE_URL
supabase_key = Config.SUPABASE_KEY
if not supabase_url or not supabase_key or supabase_key == '':
_db_error = "SUPABASE credentials not set"
print(f"[DB] {_db_error} - falling back to local storage")
return False
try:
from supabase import create_client
from database.storage_bucket_db import StorageBucketDB
supabase_client = create_client(supabase_url, supabase_key)
_db_client = StorageBucketDB(supabase_client)
STORAGE_MODE = 'storage_bucket'
print("[DB] ✅ Using Supabase STORAGE BUCKET (analytics-data)")
return True
except Exception as e:
_db_error = f"Failed to init storage bucket: {str(e)}"
print(f"[DB ERROR] {_db_error}")
return False
def _init_local():
"""Initialize local file storage"""
global STORAGE_MODE, _db_client, _db_error
try:
from database.local_storage import get_local_storage
_db_client = get_local_storage()
STORAGE_MODE = 'local'
print("[DB] Using LOCAL FILE STORAGE (/tmp/analytics_data)")
return True
except Exception as e:
_db_error = f"Failed to init local storage: {str(e)}"
print(f"[DB ERROR] {_db_error}")
return False
def _init_db():
"""Initialize - tries Storage Bucket first, then local"""
if not _init_storage_bucket():
_init_local()
# Initialize on module load
_init_db()
def get_db():
"""Get database client"""
if _db_client is None:
_init_db()
if _db_client is None:
raise RuntimeError(f"No database: {_db_error}")
return _db_client
def get_db_or_none():
return _db_client
def get_db_error():
return _db_error
def get_storage_mode():
return STORAGE_MODE
|