| import firebase_admin |
| from firebase_admin import credentials, firestore |
| import pymongo |
| from datetime import datetime |
| import os |
|
|
|
|
| |
| cred = credentials.Certificate('serviceAccountKey.json') |
| firebase_admin.initialize_app(cred) |
| db = firestore.client() |
|
|
| |
| 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"] |
|
|
| |
| |
| |
| |
| |
| |
|
|
| 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 |
|
|
| |
| firestore_collection = db.collection("quick-reply") |
| docs = firestore_collection.where("timeModified", ">", last_sync_timestamp).stream() |
| print(f'lastSync: {last_sync_timestamp} | docs: {type(docs)}') |
|
|
| |
| 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) |
|
|
| |
| current_timestamp = datetime.now().timestamp() * 1000 |
| |
| |
| |
| |
| |
|
|
| mongo_db["log"].replace_one( |
| {"key": "last_sync_faq_from_firebase"}, |
| {"key": "last_sync_faq_from_firebase", "value": current_timestamp}, |
| upsert=True |
| ) |