from dataclasses import field from marshmallow_dataclass import dataclass from marshmallow import validates_schema, ValidationError from iti.applications.common.utils.schema import BaseSchema, Pagination from typing import ClassVar, Optional from apiflask import fields @dataclass(base_schema=BaseSchema) class NodeQuery(Pagination): """ 节点信息查询请求 """ keyword: Optional[str] = field( default=None, metadata={ "required": False, "metadata": {"example": "tt_01", "description": "查询关键字[节点编号]"}, }, ) workshop_id: int = field( default=None, metadata={ "required": False, "metadata": {"example": 1, "description": "车间ID"}, }, ) device_id: int = field( default=None, metadata={ "required": False, "metadata": {"example": 1, "description": "设备ID"}, }, ) endpoint_id: int = field( default=None, metadata={ "required": False, "metadata": {"example": 1, "description": "采集端ID"}, }, ) status: int = field( default=None, metadata={ "required": False, "metadata": {"example": 0, "description": "状态"}, }, ) Schema: ClassVar[BaseSchema] = BaseSchema # For the type check class NodeAddRequest(BaseSchema): """ 节点新增信息 """ device_id = fields.Integer( required=True, metadata={"example": 1, "description": "设备ID"}, ) endpoint_id = fields.Integer( required=True, metadata={"example": 1, "description": "采集端ID"}, ) node_number = fields.String( required=True, metadata={"example": "tt_01", "description": "节点编号"}, ) title = fields.String( required=True, metadata={"example": "节点ID", "description": "节点ID"}, ) mark = fields.String( required=False, metadata={"example": "采集标识", "description": "采集标识"}, load_default="", ) mark_type = fields.Integer( required=False, metadata={"example": "读写标识", "description": "采集类型 1:只读 2:只写 3:读写"}, load_default=1, ) tag_label = fields.String( required=True, metadata={"example": "变量别名", "description": "变量别名"}, ) data_type = fields.String( required=True, metadata={"example": "text", "description": "值类型 text: 文本 int: 整型 float: 浮点型 boolean:布尔型"}, ) class NodeUpdateRequest(BaseSchema): """ 节点更新信息 """ device_id = fields.Integer( required=True, metadata={"example": 1, "description": "设备ID"}, ) endpoint_id = fields.Integer( required=True, metadata={"example": 1, "description": "采集端ID"}, ) node_number = fields.String( required=True, metadata={"example": "tt_01", "description": "节点编号"}, ) title = fields.String( required=True, metadata={"example": "节点ID", "description": "节点ID"}, ) mark = fields.String( required=False, metadata={"example": "采集标识", "description": "采集标识"}, load_default="", ) mark_type = fields.Integer( required=False, metadata={"example": "读写标识", "description": "采集类型 1:只读 2:只写 3:读写"}, load_default=1, ) tag_label = fields.String( required=True, metadata={"example": "变量别名", "description": "变量别名"}, ) data_type = fields.String( required=True, metadata={"example": "text", "description": "值类型 text: 文本 int: 整型 float: 浮点型 boolean:布尔型"}, ) status = fields.Integer( required=False, metadata={"example": 1, "description": "状态(0-禁用,1-启用)"}, load_default=None, )