Przeglądaj źródła

refactor(api/core/app/segments): implement `to_object` in ObjectVariable and ArrayVariable. (#6671)

Signed-off-by: -LAN- <laipz8200@outlook.com>
-LAN- 9 miesięcy temu
rodzic
commit
75e6576c67

+ 0 - 6
api/core/app/segments/segments.py

@@ -34,12 +34,6 @@ class Segment(BaseModel):
         return str(self.value)
 
     def to_object(self) -> Any:
-        if isinstance(self.value, Segment):
-            return self.value.to_object()
-        if isinstance(self.value, list):
-            return [v.to_object() for v in self.value]
-        if isinstance(self.value, dict):
-            return {k: v.to_object() for k, v in self.value.items()}
         return self.value
 
 

+ 6 - 0
api/core/app/segments/variables.py

@@ -56,6 +56,9 @@ class ObjectVariable(Variable):
         # TODO: Use markdown code block
         return json.dumps(self.model_dump()['value'], ensure_ascii=False, indent=2)
 
+    def to_object(self):
+        return {k: v.to_object() for k, v in self.value.items()}
+
 
 class ArrayVariable(Variable):
     value_type: SegmentType = SegmentType.ARRAY
@@ -65,6 +68,9 @@ class ArrayVariable(Variable):
     def markdown(self) -> str:
         return '\n'.join(['- ' + item.markdown for item in self.value])
 
+    def to_object(self):
+        return [v.to_object() for v in self.value]
+
 
 class FileVariable(Variable):
     value_type: SegmentType = SegmentType.FILE