feat(api): simplify `execution_metadata` handling for `WorkflowNodeExecution`

Return an empty dictionary instead of `None` in
`execution_metadata_dict` when metadata is absent.
pull/20062/head
QuantumGhost 1 year ago
parent 997b46bfaa
commit a2ef258d25

@ -103,10 +103,7 @@ class SQLAlchemyWorkflowNodeExecutionRepository(WorkflowNodeExecutionRepository)
inputs = db_model.inputs_dict inputs = db_model.inputs_dict
process_data = db_model.process_data_dict process_data = db_model.process_data_dict
outputs = db_model.outputs_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()}
metadata = {NodeRunMetadataKey(k): v for k, v in db_model.execution_metadata_dict.items()}
else:
metadata = {}
# Convert status to domain enum # Convert status to domain enum
status = NodeExecutionStatus(db_model.status) status = NodeExecutionStatus(db_model.status)

@ -666,8 +666,11 @@ class WorkflowNodeExecution(Base):
return json.loads(self.process_data) if self.process_data else None return json.loads(self.process_data) if self.process_data else None
@property @property
def execution_metadata_dict(self) -> dict[str, Any] | None: def execution_metadata_dict(self) -> dict[str, Any]:
return json.loads(self.execution_metadata) if self.execution_metadata else None # 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 @property
def extras(self): def extras(self):

Loading…
Cancel
Save