From bec9346a983dd3b094161a2b291fd0bb11aec483 Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Tue, 26 Mar 2024 00:33:20 -0300 Subject: [PATCH] Refactor serialization logic in VertexBuildModel class --- src/backend/langflow/services/monitor/schema.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/backend/langflow/services/monitor/schema.py b/src/backend/langflow/services/monitor/schema.py index c74a0fb88..80636a554 100644 --- a/src/backend/langflow/services/monitor/schema.py +++ b/src/backend/langflow/services/monitor/schema.py @@ -79,7 +79,12 @@ class VertexBuildModel(BaseModel): @field_serializer("data", "artifacts") def serialize_dict(v): if isinstance(v, dict): - # map_dict = to_map(v) + # check if the value of each key is a BaseModel or a list of BaseModels + for key, value in v.items(): + if isinstance(value, BaseModel): + v[key] = value.model_dump() + elif isinstance(value, list) and all(isinstance(i, BaseModel) for i in value): + v[key] = [i.model_dump() for i in value] return json.dumps(v) return v @@ -92,6 +97,12 @@ class VertexBuildModel(BaseModel): return v return v + @field_serializer("params") + def serialize_params(v): + if isinstance(v, list) and all(isinstance(i, BaseModel) for i in v): + return json.dumps([i.model_dump() for i in v]) + return v + @validator("data", pre=True) def validate_data(cls, v): if isinstance(v, str):