|
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 |
|
) |