import firebase_admin from firebase_admin import credentials, firestore import pymongo from datetime import datetime import os # Initialize the Firebase app cred = credentials.Certificate('serviceAccountKey.json') firebase_admin.initialize_app(cred) db = firestore.client() # Connect to MongoDB db_user = os.environ['DB_USER'] db_pass = os.environ['DB_PASS'] db_uri = f"mongodb+srv://{db_user}:{db_pass}@cluster0.firly.gcp.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0" mongo_client = pymongo.MongoClient(db_uri) mongo_db = mongo_client["chat_support"] mongo_collection = mongo_db["faq"] # Fetch the last sync timestamp from MongoDB # last_sync_doc = mongo_db["log"].find_one({"key": "last_sync_faq_from_firebase"}) # if last_sync_doc: # last_sync_timestamp = last_sync_doc["value"]["$numberLong"] # else: # last_sync_timestamp = 0 last_sync_doc = mongo_db["log"].find_one({"key": "last_sync_faq_from_firebase"}) if last_sync_doc: last_sync_timestamp = int(last_sync_doc["value"]) else: last_sync_timestamp = 0 # Fetch data from Firebase Firestore firestore_collection = db.collection("quick-reply") docs = firestore_collection.where("timeModified", ">", last_sync_timestamp).stream() print(f'lastSync: {last_sync_timestamp} | docs: {type(docs)}') # # Insert/Update data in MongoDB for doc in docs: doc_dict = doc.to_dict() doc_dict["_id"] = doc.id doc_dict["title"] = doc.get("shortcut") print(doc.id, doc.get("shortcut")) mongo_collection.replace_one({"_id": doc.id}, doc_dict, upsert=True) # Update the last sync timestamp in MongoDB current_timestamp = datetime.now().timestamp() * 1000 # mongo_db["log"].replace_one( # {"key": "last_sync_faq_from_firebase"}, # {"key": "last_sync_faq_from_firebase", "value": {"$numberLong": str(int(current_timestamp))}}, # upsert=True # ) mongo_db["log"].replace_one( {"key": "last_sync_faq_from_firebase"}, {"key": "last_sync_faq_from_firebase", "value": current_timestamp}, upsert=True )