From a2ef258d2594ef0ba0f9054c8cecc9673e834917 Mon Sep 17 00:00:00 2001 From: QuantumGhost Date: Wed, 21 May 2025 18:18:36 +0800 Subject: [PATCH] feat(api): simplify `execution_metadata` handling for `WorkflowNodeExecution` Return an empty dictionary instead of `None` in `execution_metadata_dict` when metadata is absent. --- .../sqlalchemy_workflow_node_execution_repository.py | 5 +---- api/models/workflow.py | 7 +++++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py index b213449be5..8d916a19db 100644 --- a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py +++ b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py @@ -103,10 +103,7 @@ class SQLAlchemyWorkflowNodeExecutionRepository(WorkflowNodeExecutionRepository) inputs = db_model.inputs_dict process_data = db_model.process_data_dict outputs = db_model.outputs_dict - if db_model.execution_metadata_dict: - metadata = {NodeRunMetadataKey(k): v for k, v in db_model.execution_metadata_dict.items()} - else: - metadata = {} + metadata = {NodeRunMetadataKey(k): v for k, v in db_model.execution_metadata_dict.items()} # Convert status to domain enum status = NodeExecutionStatus(db_model.status) diff --git a/api/models/workflow.py b/api/models/workflow.py index 8751fd1aa8..fc6de8692c 100644 --- a/api/models/workflow.py +++ b/api/models/workflow.py @@ -666,8 +666,11 @@ class WorkflowNodeExecution(Base): return json.loads(self.process_data) if self.process_data else None @property - def execution_metadata_dict(self) -> dict[str, Any] | None: - return json.loads(self.execution_metadata) if self.execution_metadata else None + def execution_metadata_dict(self) -> dict[str, Any]: + # When the metadata is unset, we return an empty dictionary instead of `None`. + # This approach streamlines the logic for the caller, making it easier to handle + # cases where metadata is absent. + return json.loads(self.execution_metadata) if self.execution_metadata else {} @property def extras(self):