From ba835dc16f0e36d57121911014ed083c4389c2c9 Mon Sep 17 00:00:00 2001 From: ogabrielluiz Date: Tue, 18 Jun 2024 21:24:22 -0300 Subject: [PATCH] refactor: Improve endpoint name uniqueness handling in create_flow function --- src/backend/base/langflow/api/v1/flows.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/backend/base/langflow/api/v1/flows.py b/src/backend/base/langflow/api/v1/flows.py index 08957e502..ad51b516d 100644 --- a/src/backend/base/langflow/api/v1/flows.py +++ b/src/backend/base/langflow/api/v1/flows.py @@ -50,6 +50,23 @@ def create_flow( flow.name = f"{flow.name} ({max(numbers) + 1})" else: flow.name = f"{flow.name} (1)" + # Now check if the endpoint is unique + if session.exec( + select(Flow).where(Flow.endpoint_name == flow.endpoint_name).where(Flow.user_id == current_user.id) + ).first(): + flows = session.exec( + select(Flow) + .where(Flow.endpoint_name.like(f"{flow.endpoint_name}-%")) + .where(Flow.user_id == current_user.id) + ).all() + if flows: + # The endpoitn name is like "my-endpoint","my-endpoint-1", "my-endpoint-2" + # so we need to get the highest number and add 1 + # we need to get the last part of the endpoint name + numbers = [int(flow.endpoint_name.split("-")[-1]) for flow in flows] + flow.endpoint_name = f"{flow.endpoint_name}-{max(numbers) + 1}" + else: + flow.endpoint_name = f"{flow.endpoint_name}-1" db_flow = Flow.model_validate(flow, from_attributes=True) db_flow.updated_at = datetime.now(timezone.utc)