Files
core/model_nodes/node_switch_models.py
2025-10-06 19:13:55 +05:00

66 lines
2.6 KiB
Python

from typing import Optional
from pydantic import BaseModel, Field
from .form_base_descriptor_models import FormDescriptor, RowElement, AreaElement, LinkPort
class SwitchNodeData(BaseModel):
"""
Pydantic модель для валидации данных узла switch
"""
ps_id: Optional[int] = Field(default=None, description="ID процесса")
node_type: Optional[str] = Field(default=None, description="Тип узла")
class SwitchNodeLinks(BaseModel):
"""
Pydantic модель для валидации связей узла switch
"""
parent_id: Optional[int] = Field(default=None, description="ID родительского узла")
parent_port_number: Optional[int] = Field(default=None, description="Номер порта родительского узла")
class SwitchNodeCoreSchemaData(BaseModel):
"""
Pydantic модель для данных портов узла switch
"""
default_port_number: Optional[int] = Field(default=0, description="Номер порта для перехода по Связи default (LINK)")
case_1_port_number: Optional[int] = Field(default=1, description="Номер порта для перехода по Связи case_1 (LINK)")
class SwitchNodeCoreSchema(BaseModel):
"""
Pydantic модель для схемы узла switch
"""
ps_id: Optional[int] = Field(default=None, description="ID процесса")
node_type: Optional[str] = Field(default=None, description="Тип узла")
parent_id: Optional[int] = Field(default=None, description="ID родительского узла")
parent_port_number: Optional[int] = Field(default=None, description="Номер порта родительского узла")
data: Optional[SwitchNodeCoreSchemaData] = Field(default=None, description="Данные узла")
# Дескриптор формы узла SWITCH
SWITCH_FORM_DESCRIPTOR = FormDescriptor(
elements=[
RowElement(
name="switch_row",
type="row",
label="Switch condition",
link_port=LinkPort(id="case_1_output", label="case_1", is_addable=True),
elements=[
AreaElement(
name="switch_value",
type="area",
label="Switch condition",
placeholder="Enter condition",
)
],
),
RowElement(
name="default_row",
type="row",
label="Default",
link_port=LinkPort(id="default_output", label="default"),
),
]
)