diff --git a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py index 3d63fbc09a..f2d3dc7cd9 100644 --- a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py +++ b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py @@ -44,8 +44,8 @@ class SQLAlchemyWorkflowNodeExecutionRepository(WorkflowNodeExecutionRepository) self, session_factory: sessionmaker | Engine, user: Union[Account, EndUser], - app_id: Optional[str] = None, - triggered_from: Optional[WorkflowNodeExecutionTriggeredFrom] = None, + app_id: Optional[str], + triggered_from: Optional[WorkflowNodeExecutionTriggeredFrom], ): """ Initialize the repository with a SQLAlchemy sessionmaker or engine and context information. @@ -53,8 +53,8 @@ class SQLAlchemyWorkflowNodeExecutionRepository(WorkflowNodeExecutionRepository) Args: session_factory: SQLAlchemy sessionmaker or engine for creating sessions user: Account or EndUser object containing tenant_id, user ID, and role information - app_id: Optional app ID for filtering by application - triggered_from: Source of the execution trigger (single-step or workflow-run) + app_id: App ID for filtering by application (can be None) + triggered_from: Source of the execution trigger (SINGLE_STEP or WORKFLOW_RUN) """ # If an engine is provided, create a sessionmaker from it if isinstance(session_factory, Engine): diff --git a/api/services/workflow_run_service.py b/api/services/workflow_run_service.py index d5f9a46016..a760b0f586 100644 --- a/api/services/workflow_run_service.py +++ b/api/services/workflow_run_service.py @@ -7,7 +7,14 @@ from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository from core.workflow.repository.workflow_node_execution_repository import OrderConfig from extensions.ext_database import db from libs.infinite_scroll_pagination import InfiniteScrollPagination -from models import Account, App, EndUser, WorkflowNodeExecution, WorkflowRun, WorkflowRunTriggeredFrom +from models import ( + Account, + App, + EndUser, + WorkflowNodeExecution, + WorkflowRun, + WorkflowRunTriggeredFrom, +) class WorkflowRunService: @@ -130,7 +137,10 @@ class WorkflowRunService: return [] repository = SQLAlchemyWorkflowNodeExecutionRepository( - session_factory=db.engine, user=user, app_id=app_model.id + session_factory=db.engine, + user=user, + app_id=app_model.id, + triggered_from=None, ) # Use the repository to get the node executions with ordering diff --git a/api/tasks/remove_app_and_related_data_task.py b/api/tasks/remove_app_and_related_data_task.py index 859832c283..c6b67a4940 100644 --- a/api/tasks/remove_app_and_related_data_task.py +++ b/api/tasks/remove_app_and_related_data_task.py @@ -204,7 +204,12 @@ def _delete_app_workflow_node_executions(tenant_id: str, app_id: str): raise ValueError(errmsg) # Create a repository instance for WorkflowNodeExecution - repository = SQLAlchemyWorkflowNodeExecutionRepository(session_factory=db.engine, user=user, app_id=app_id) + repository = SQLAlchemyWorkflowNodeExecutionRepository( + session_factory=db.engine, + user=user, + app_id=app_id, + triggered_from=None, + ) # Use the clear method to delete all records for this tenant_id and app_id repository.clear() diff --git a/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py b/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py index 608cc5aa25..2d3fc3774e 100644 --- a/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py +++ b/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py @@ -58,7 +58,12 @@ def repository(session, mock_user): """Create a repository instance with test data.""" _, session_factory = session app_id = "test-app" - return SQLAlchemyWorkflowNodeExecutionRepository(session_factory=session_factory, user=mock_user, app_id=app_id) + return SQLAlchemyWorkflowNodeExecutionRepository( + session_factory=session_factory, + user=mock_user, + app_id=app_id, + triggered_from=None, + ) def test_save(repository, session):