mirror of
https://github.com/langgenius/dify.git
synced 2025-07-25 18:39:19 +00:00

refactor(api): Separate SegmentType for Integer/Float to Enable Pydantic Serialization (#22025) This PR addresses serialization issues in the VariablePool model by separating the `value_type` tags for `IntegerSegment`/`FloatSegment` and `IntegerVariable`/`FloatVariable`. Previously, both Integer and Float types shared the same `SegmentType.NUMBER` tag, causing conflicts during serialization. Key changes: - Introduce distinct `value_type` tags for Integer and Float segments/variables - Add `VariableUnion` and `SegmentUnion` types for proper type discrimination - Leverage Pydantic's discriminated union feature for seamless serialization/deserialization - Enable accurate serialization of data structures containing these types Closes #22024.
30 lines
860 B
Python
30 lines
860 B
Python
from flask_restful import fields
|
|
|
|
from libs.helper import TimestampField
|
|
|
|
from ._value_type_serializer import serialize_value_type
|
|
|
|
conversation_variable_fields = {
|
|
"id": fields.String,
|
|
"name": fields.String,
|
|
"value_type": fields.String(attribute=serialize_value_type),
|
|
"value": fields.String,
|
|
"description": fields.String,
|
|
"created_at": TimestampField,
|
|
"updated_at": TimestampField,
|
|
}
|
|
|
|
paginated_conversation_variable_fields = {
|
|
"page": fields.Integer,
|
|
"limit": fields.Integer,
|
|
"total": fields.Integer,
|
|
"has_more": fields.Boolean,
|
|
"data": fields.List(fields.Nested(conversation_variable_fields), attribute="data"),
|
|
}
|
|
|
|
conversation_variable_infinite_scroll_pagination_fields = {
|
|
"limit": fields.Integer,
|
|
"has_more": fields.Boolean,
|
|
"data": fields.List(fields.Nested(conversation_variable_fields)),
|
|
}
|