diff --git a/function_app.py b/function_app.py index 6ebeffe..c0e9d96 100644 --- a/function_app.py +++ b/function_app.py @@ -7,8 +7,24 @@ from bson import ObjectId from datetime import datetime +# Read flag from environment variables +ENABLE_OBJECTID_CONVERSION = os.getenv("ENABLE_OBJECTID_CONVERSION", "true").lower() == "true" + app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION) +def convert_objectid(document): + """Recursively convert ObjectIds to strings.""" + if isinstance(document, list): + return [convert_objectid(d) for d in document] + elif isinstance(document, dict): + return { + k: str(v) if ENABLE_OBJECTID_CONVERSION and isinstance(v, ObjectId) + else convert_objectid(v) + for k, v in document.items() + } + else: + return document + def connect_to_mongodb(): conn_str = os.environ.get("MONGODBATLAS_CLUSTER_CONNECTIONSTRING") if not conn_str: @@ -132,6 +148,8 @@ def mongodb_dataapi_replace(req: func.HttpRequest) -> func.HttpResponse: else: return error_response("Not a valid operation") + result = convert_objectid(result) + return success_response(result) except Exception as e: @@ -141,3 +159,4 @@ def mongodb_dataapi_replace(req: func.HttpRequest) -> func.HttpResponse: finally: if client: client.close() +