Spaces:
Sleeping
Sleeping
File size: 1,932 Bytes
629b11b |
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 44 45 46 47 48 49 50 51 52 53 54 55 |
# 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
|