From 271fbc91ac244ccd755bc1b2c975ff6cb3cfcc05 Mon Sep 17 00:00:00 2001 From: shanurrahman Date: Wed, 14 Feb 2024 20:00:47 -0800 Subject: [PATCH 1/3] fixing copilot and flow related issues --- llm-server/models/repository/flow_repo.py | 17 +++++++++++ .../routes/copilot/copilot_controller.py | 7 +++-- llm-server/routes/flow/flow_controller.py | 29 +++++++++++++++++++ 3 files changed, 51 insertions(+), 2 deletions(-) diff --git a/llm-server/models/repository/flow_repo.py b/llm-server/models/repository/flow_repo.py index 34fd79802..a93c4ac29 100644 --- a/llm-server/models/repository/flow_repo.py +++ b/llm-server/models/repository/flow_repo.py @@ -157,3 +157,20 @@ def add_or_update_variable_in_flow( session.add(variable) session.commit() return variable + + +def delete_flow(flow_id: str) -> bool: + """ + Deletes a flow record from the database. + Args: + flow_id: The ID of the flow to delete. + Returns: + True if the flow was deleted, False otherwise. + """ + with Session() as session: + flow = session.query(Flow).filter(Flow.id == flow_id).first() + if flow: + session.delete(flow) + session.commit() + return True + return False diff --git a/llm-server/routes/copilot/copilot_controller.py b/llm-server/routes/copilot/copilot_controller.py index fe0e4c460..148868a3f 100644 --- a/llm-server/routes/copilot/copilot_controller.py +++ b/llm-server/routes/copilot/copilot_controller.py @@ -84,13 +84,16 @@ def get_copilot(copilot_id): @copilot.route("/", methods=["DELETE"]) -def delete_bot(copilot_id): +def delete_bot(user, copilot_id): session = SessionLocal() try: # Find the bot bot = find_or_fail_by_bot_id(copilot_id) - # Delete the bot using the session + if user.id != int(bot.user_id): + return jsonify({"error": "That does not seem right."}), 403 + + # This should be soft delete but for now, we are doing hard delete session.delete(bot) session.commit() return jsonify({"success": "chatbot_deleted"}), 200 diff --git a/llm-server/routes/flow/flow_controller.py b/llm-server/routes/flow/flow_controller.py index 3365568b6..270339714 100644 --- a/llm-server/routes/flow/flow_controller.py +++ b/llm-server/routes/flow/flow_controller.py @@ -11,6 +11,7 @@ get_variables_for_flow, add_or_update_variable_in_flow, update_flow, + delete_flow as delete_flow_from_db, ) from presenters.flow_presenters import flow_to_dict, flow_variable_to_dict from routes.flow import flow_vector_service @@ -249,3 +250,31 @@ def add_variables_to_flow_api(flow_id: str): ), 500, ) + + +@flow.route("/", methods=["DELETE"]) +def delete_flow_api(flow_id: str): + try: + # Attempt to delete the flow from the database + if delete_flow_from_db(flow_id): + # Attempt to delete the flow from the vector store + point_id = flow_vector_service.get_flow_point_id_by_flow_id(flow_id) + if point_id: + delete_flow_from_vector_store(point_id) + return ( + jsonify({"success": True, "message": "Flow deleted successfully."}), + 200, + ) + else: + return ( + jsonify({"success": False, "message": "Flow vector not found."}), + 404, + ) + else: + return ( + jsonify({"success": False, "message": "Flow not found in database."}), + 404, + ) + except Exception as e: + logger.error("Failed to delete flow", payload=e) + return jsonify({"error": "Failed to delete flow. {}".format(str(e))}), 500 From 6fdef36f358e775cfb709b92e5a8f70720be5146 Mon Sep 17 00:00:00 2001 From: shanurrahman Date: Wed, 14 Feb 2024 20:04:09 -0800 Subject: [PATCH 2/3] cloud changes --- llm-server/routes/copilot/copilot_controller.py | 5 +---- llm-server/routes/flow/flow_controller.py | 1 + llm-server/routes/flow/flow_vector_service.py | 12 +++++++----- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/llm-server/routes/copilot/copilot_controller.py b/llm-server/routes/copilot/copilot_controller.py index 148868a3f..096fd6d38 100644 --- a/llm-server/routes/copilot/copilot_controller.py +++ b/llm-server/routes/copilot/copilot_controller.py @@ -84,15 +84,12 @@ def get_copilot(copilot_id): @copilot.route("/", methods=["DELETE"]) -def delete_bot(user, copilot_id): +def delete_bot(copilot_id): session = SessionLocal() try: # Find the bot bot = find_or_fail_by_bot_id(copilot_id) - if user.id != int(bot.user_id): - return jsonify({"error": "That does not seem right."}), 403 - # This should be soft delete but for now, we are doing hard delete session.delete(bot) session.commit() diff --git a/llm-server/routes/flow/flow_controller.py b/llm-server/routes/flow/flow_controller.py index 270339714..aeadc0afd 100644 --- a/llm-server/routes/flow/flow_controller.py +++ b/llm-server/routes/flow/flow_controller.py @@ -17,6 +17,7 @@ from routes.flow import flow_vector_service from routes.flow.utils.dynamic_flow_builder import build_dynamic_flow from utils.get_logger import CustomLogger +from routes.flow.flow_vector_service import delete_flow as delete_flow_from_vector_store logger = CustomLogger("flow") flow = Blueprint("flow", __name__) diff --git a/llm-server/routes/flow/flow_vector_service.py b/llm-server/routes/flow/flow_vector_service.py index fec229228..c9dbb869d 100644 --- a/llm-server/routes/flow/flow_vector_service.py +++ b/llm-server/routes/flow/flow_vector_service.py @@ -47,11 +47,13 @@ def create_flow(flow: FlowDTO): documents: List[Document] = [] document = Document(page_content=flow.description + " " + flow.name) - document.metadata.update({ - "bot_id": str(flow.bot_id), - "flow_id": str(flow.id), - "operation_id": flow.operation_id - }) + document.metadata.update( + { + "bot_id": str(flow.bot_id), + "flow_id": str(flow.id), + "operation_id": flow.operation_id, + } + ) documents.append(document) From 9801a589ac6c0f98c01d3a3cbaa3e0ac824c589d Mon Sep 17 00:00:00 2001 From: gharbat <32633162+gharbat@users.noreply.github.com> Date: Fri, 16 Feb 2024 11:03:27 -0800 Subject: [PATCH 3/3] Update flow_controller.py --- llm-server/routes/flow/flow_controller.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llm-server/routes/flow/flow_controller.py b/llm-server/routes/flow/flow_controller.py index aeadc0afd..6d477dc67 100644 --- a/llm-server/routes/flow/flow_controller.py +++ b/llm-server/routes/flow/flow_controller.py @@ -278,4 +278,4 @@ def delete_flow_api(flow_id: str): ) except Exception as e: logger.error("Failed to delete flow", payload=e) - return jsonify({"error": "Failed to delete flow. {}".format(str(e))}), 500 + return jsonify({"error": "Failed to delete flow."}), 500