63 lines
1.8 KiB
Python
63 lines
1.8 KiB
Python
from typing import Dict, Any
|
||
from core import VorkNode
|
||
from model_nodes.node_if_models import (
|
||
IfNodeData,
|
||
IfNodeLinks,
|
||
IfNodeCoreSchema,
|
||
IfNodeCoreSchemaData,
|
||
IfNodeDescriptor
|
||
)
|
||
|
||
|
||
class VorkNodeIf(VorkNode):
|
||
|
||
@property
|
||
def id(self) -> str:
|
||
return "node_if"
|
||
|
||
@classmethod
|
||
def form(cls) -> IfNodeDescriptor:
|
||
return IfNodeDescriptor()
|
||
|
||
def validate(self) -> IfNodeCoreSchema:
|
||
"""
|
||
Валидирует данные и связи узла с помощью Pydantic моделей
|
||
и возвращает схему с валидированными данными.
|
||
"""
|
||
try:
|
||
# Валидируем данные
|
||
validated_data = self.validate_data()
|
||
|
||
# Валидируем связи
|
||
validated_links = self.validate_links()
|
||
|
||
# Создаем вложенную схему с данными портов
|
||
node_data = IfNodeCoreSchemaData(
|
||
then_port_number=0,
|
||
else_port_number=1,
|
||
)
|
||
|
||
# Создаем схему с валидированными данными из экземпляра
|
||
return IfNodeCoreSchema(
|
||
ps_id=validated_data.ps_id,
|
||
node_type=validated_data.node_type,
|
||
parent_id=validated_links.parent_id,
|
||
parent_port_number=validated_links.parent_port_number,
|
||
data=node_data,
|
||
)
|
||
|
||
except Exception as e:
|
||
print(f"Node validation error if: {e}")
|
||
raise
|
||
|
||
def validate_data(self) -> IfNodeData:
|
||
|
||
return IfNodeData(**self.data)
|
||
|
||
def validate_links(self) -> IfNodeLinks:
|
||
|
||
return IfNodeLinks(**self.links)
|
||
|
||
def process(self, context: Any) -> bool:
|
||
return True
|