Spaces:
Sleeping
Sleeping
| 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 |