Spaces:
Sleeping
Sleeping
File size: 1,459 Bytes
f3ca15e | 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 | import firebase_admin
from firebase_admin import credentials, firestore
import json
import logging
from api.core.config import settings # Changed import path
logger = logging.getLogger(__name__)
db = None # Global Firestore client instance
def initialize_firebase():
"""
Initializes the Firebase Admin SDK.
"""
global db
if firebase_admin._apps: # Check if app is already initialized
logger.info("Firebase Admin SDK already initialized.")
db = firestore.client()
return
try:
firebase_json_str = settings.FIREBASE_CREDENTIALS_JSON
if not firebase_json_str:
raise ValueError("FIREBASE_CREDENTIALS_JSON is not set in environment variables.")
firebase_cred_dict = json.loads(firebase_json_str)
cred = credentials.Certificate(firebase_cred_dict)
firebase_admin.initialize_app(cred)
db = firestore.client()
logger.info("Firebase Admin SDK initialized successfully from environment variable.")
except Exception as e:
logger.error(f"Failed to initialize Firebase Admin SDK: {e}")
db = None
def get_firestore_db():
"""Returns the initialized Firestore client."""
if db is None:
logger.warning("Firestore DB client not initialized. Attempting to initialize now.")
initialize_firebase()
if db is None:
raise RuntimeError("Firestore DB client could not be initialized.")
return db |