Spaces:
Sleeping
Sleeping
# firebase/firebase_config.py | |
import firebase_admin | |
from firebase_admin import credentials, firestore | |
import os | |
import json | |
FALLBACK_LOG_PATH = "data/logs.json" | |
def init_firebase(): | |
try: | |
if not firebase_admin._apps: | |
cred_path = "firebase_credentials.json" | |
if not os.path.exists(cred_path): | |
raise FileNotFoundError("Firebase credentials file not found.") | |
cred = credentials.Certificate(cred_path) | |
firebase_admin.initialize_app(cred) | |
return firestore.client() | |
except Exception as e: | |
print(f"[Firebase ERROR] {e}") | |
return None | |
def log_message_to_firestore(message_dict): | |
db = init_firebase() | |
if db: | |
try: | |
chat_ref = db.collection("conversations").document("bot_talk_log") | |
chat_ref.set({"messages": firestore.ArrayUnion([message_dict])}, merge=True) | |
return | |
except Exception as e: | |
print(f"[Firestore ERROR] {e}") | |
# Fallback if Firebase not available | |
log_to_local_file(message_dict) | |
def log_to_local_file(message_dict): | |
os.makedirs("data", exist_ok=True) | |
# Read existing logs | |
if os.path.exists(FALLBACK_LOG_PATH): | |
with open(FALLBACK_LOG_PATH, "r") as f: | |
try: | |
logs = json.load(f) | |
except json.JSONDecodeError: | |
logs = [] | |
else: | |
logs = [] | |
logs.append(message_dict) | |
with open(FALLBACK_LOG_PATH, "w") as f: | |
json.dump(logs, f, indent=2) | |
print("[Local LOG] Message saved to fallback log.") | |