chathur_api / api /core /firebase_utils.py
VJnCode's picture
Deploy FastAPI Docker app to HF Spaces
f3ca15e
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