Spaces:
Sleeping
Sleeping
| # Datei: firebase_service.py | |
| import firebase_admin | |
| from firebase_admin import credentials | |
| from firebase_admin import firestore | |
| import os | |
| # --- INITIALISIERUNG --- | |
| # Lade den Pfad des Service Account Schlüssels aus Umgebungsvariablen (Beste Praxis) | |
| SERVICE_ACCOUNT_PATH = os.environ.get("FIREBASE_SA_KEY_PATH", "sky-ai-key.json") # Default-Name | |
| def initialize_firebase_db(): | |
| """Initialisiert die Firebase Admin SDK Verbindung und gibt den Firestore-Client zurück.""" | |
| if firebase_admin._apps: | |
| return firestore.client() | |
| try: | |
| # Lade die Anmeldedaten | |
| cred = credentials.Certificate(SERVICE_ACCOUNT_PATH) | |
| # Initialisiere die Firebase App | |
| firebase_admin.initialize_app(cred) | |
| print("INFO: Firebase Admin SDK erfolgreich initialisiert.") | |
| # Gebe den Firestore-Client zurück | |
| return firestore.client() | |
| except Exception as e: | |
| print(f"FEHLER: Firebase-Initialisierung fehlgeschlagen. Fehler: {e}") | |
| return None | |
| # Globale Variable, die den initialisierten Datenbank-Client hält | |
| FIRESTORE_DB = initialize_firebase_db() | |
| # --- KERNFUNKTION FÜR DATENSPEICHERUNG --- | |
| def track_and_attribute_revenue_to_db(transaction_data: dict) -> bool: | |
| """Speichert eine Transaktion in der Firestore-Datenbank (Kollektion: 'transactions').""" | |
| if not FIRESTORE_DB: | |
| print("FEHLER: Datenbank nicht verbunden.") | |
| return False | |
| try: | |
| # Die Transaktions-ID wird als Dokumenten-ID verwendet | |
| doc_ref = FIRESTORE_DB.collection('transactions').document(transaction_data['transaction_id']) | |
| doc_ref.set(transaction_data) | |
| print(f"INFO: Transaktion {transaction_data['transaction_id']} erfolgreich in Firebase gespeichert.") | |
| return True | |
| except Exception as e: | |
| print(f"FEHLER beim Speichern in Firebase: {e}") | |
| return False | |