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