From 2ef18b24607fb46c1a9a038a1560946ab719fbcf Mon Sep 17 00:00:00 2001 From: Luthfi Arifin Date: Fri, 27 Sep 2024 00:10:16 +0700 Subject: [PATCH] refactor: Event CRUD to use eventCollections from MongoDB Atlas --- app/events/crud.py | 21 +++++++++++++++++---- app/events/watch.py | 18 ++---------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/app/events/crud.py b/app/events/crud.py index 1913c53..5e067e5 100644 --- a/app/events/crud.py +++ b/app/events/crud.py @@ -1,9 +1,20 @@ import os +from dotenv import load_dotenv + from bson import ObjectId from langchain_core import documents from langchain_community.vectorstores import MongoDBAtlasVectorSearch from langchain_huggingface import HuggingFaceEmbeddings +from pymongo import MongoClient + +load_dotenv() + +DB_NAME = os.getenv("MONGO_API_DB_NAME") +COLLECTION_NAME = "events" +client = MongoClient(os.getenv("MONGO_URI")) +db = client[DB_NAME] +eventCollections = db[COLLECTION_NAME] vectorstore = MongoDBAtlasVectorSearch.from_connection_string( os.environ["MONGO_URI"], @@ -48,7 +59,9 @@ def update_event_vector(id: ObjectId, updatedFields): Update the event vector in the MongoDB Atlas database. """ - return vectorstore._collection.update_one( - {"_id": id}, - {"$set": updatedFields}, - ) + event = eventCollections.find_one({"_id": id}) + updated_event = {**event, **updatedFields} + + vectorstore._collection.delete_one({"_id": id}) + + return insert_event_vector(updated_event) diff --git a/app/events/watch.py b/app/events/watch.py index 386370e..5cb1c17 100644 --- a/app/events/watch.py +++ b/app/events/watch.py @@ -1,23 +1,9 @@ -import os - -from dotenv import load_dotenv - -from urllib.parse import urljoin - -from pymongo import MongoClient from bson.json_util import dumps -from crud import insert_event_vector, update_event_vector - -load_dotenv() +from crud import insert_event_vector, update_event_vector, eventCollections -DB_NAME = os.getenv("MONGO_API_DB_NAME") -COLLECTION_NAME = "events" -client = MongoClient(os.getenv("MONGO_URI")) -db = client[DB_NAME] -MONGODB_COLLECTION = db[COLLECTION_NAME] -change_stream = MONGODB_COLLECTION.watch() +change_stream = eventCollections.watch() for change in change_stream: if change["operationType"] == "insert": insert_event_vector(change["fullDocument"])