SIENTIAPDE-1107
feat: implement MongoDB integration with clear_mongo_id function and related tests
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
import pymongo
|
||||
from temporalio import workflow, activity
|
||||
|
||||
with workflow.unsafe.imports_passed_through():
|
||||
from typing import Any
|
||||
import traceback
|
||||
from logging import Logger
|
||||
from pymongo import MongoClient
|
||||
from sientia_do.notifications.handlers import NotificationHandler
|
||||
from sientia_do.notifications.models import NotificationLevel
|
||||
from sientia_do.temporal.activities.base import BaseActivity
|
||||
@@ -21,25 +21,18 @@ def clear_mongo_id(docs: list) -> list:
|
||||
list: The documents without the `_id` field.
|
||||
"""
|
||||
for doc in docs:
|
||||
if not isinstance(doc, dict) and not isinstance(doc, list):
|
||||
continue
|
||||
|
||||
if "_id" in doc:
|
||||
del doc["_id"]
|
||||
|
||||
if isinstance(doc, dict):
|
||||
for _key, value in doc.items():
|
||||
if isinstance(value, dict):
|
||||
clear_mongo_id([value])
|
||||
elif isinstance(value, list):
|
||||
clear_mongo_id(value)
|
||||
|
||||
if isinstance(doc, list):
|
||||
for item in doc:
|
||||
if isinstance(item, dict):
|
||||
clear_mongo_id([item])
|
||||
elif isinstance(item, list):
|
||||
clear_mongo_id(item)
|
||||
clear_mongo_id(doc)
|
||||
|
||||
elif isinstance(doc, dict):
|
||||
if "_id" in doc:
|
||||
del doc["_id"]
|
||||
|
||||
for key, value in doc.items():
|
||||
if isinstance(value, list):
|
||||
clear_mongo_id(value)
|
||||
elif isinstance(value, dict):
|
||||
clear_mongo_id([value])
|
||||
|
||||
return docs
|
||||
|
||||
@@ -51,14 +44,14 @@ class MongoDB(BaseActivity):
|
||||
self.connection_string = connection_string
|
||||
self.database_name = database_name
|
||||
|
||||
self.client = pymongo.MongoClient(
|
||||
self.client = MongoClient(
|
||||
self.connection_string, serverSelectionTimeoutMS=5000)
|
||||
self.client.server_info() # Trigger an exception if connection fails
|
||||
|
||||
self.database = self.client[self.database_name]
|
||||
|
||||
# Initialize MongoDB client here (omitted for brevity)
|
||||
self.logger.info("MongoDB connection initialized")
|
||||
logger.info("MongoDB connection initialized")
|
||||
|
||||
BaseActivity.__init__(self,
|
||||
logger=logger,
|
||||
|
||||
Reference in New Issue
Block a user