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): """ 节点信息查询请求 """ 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): """ 节点新增信息 """ endpoint_id = fields.Integer( required=False, metadata={"example": 1, "description": "采集端ID"}, load_default=None, ) title = fields.String( required=False, metadata={"example": "节点ID", "descriptrion": "节点ID"}, load_default=None, ) mark = fields.String( required=False, metadata={"example": "采集标识", "description": "采集标识"}, load_default=None, ) mark_type = fields.Integer( required=False, metadata={"example": "读写标识", "description": "采集类型 1:只读 2:只写 3:读写"}, load_default=1, ) tag_label = fields.String( required=False, metadata={"example": "变量别名", "description": "变量别名"}, load_default=None, ) data_type = fields.String( required=False, metadata={"example": "text", "description": "值类型 text: 文本 int: 整型 float: 浮点型 boolean:布尔型"}, load_default=None, ) is_warning = fields.Integer( required=False, metadata={"example": "是否预警", "description": "预警类型"}, load_default=0, ) warning_effective_config = fields.String( required=False, metadata={"example": "预警触发表达式", "description": "预警触发表达式"}, load_default=None, ) is_calling = fields.Integer( required=False, metadata={"example": "是否报警", "description": "报警类型"}, load_default=0, ) calling_effective_config = fields.String( required=False, metadata={"example": "报警触发表达式", "description": "报警触发表达式"}, load_default=None, ) method_content = fields.String( required=False, metadata={"example": "方法节点", "description": "方法节点"}, load_default=None, ) class NodeUpdateRequest(BaseSchema): """ 节点更新信息 """ endpoint_id = fields.Integer( required=False, metadata={"example": 1, "description": "采集端ID"}, load_default=None, ) title = fields.String( required=False, metadata={"example": "节点ID", "descriptrion": "节点ID"}, load_default=None, ) mark = fields.String( required=False, metadata={"example": "采集标识", "description": "采集标识"}, load_default=None, ) mark_type = fields.Integer( required=False, metadata={"example": "读写标识", "description": "采集类型 1:只读 2:只写 3:读写"}, load_default=1, ) tag_label = fields.String( required=False, metadata={"example": "变量别名", "description": "变量别名"}, load_default=None, ) data_type = fields.String( required=False, metadata={"example": "text", "description": "值类型 text: 文本 int: 整型 float: 浮点型 boolean:布尔型"}, load_default=None, ) is_warning = fields.Integer( required=False, metadata={"example": "是否预警", "description": "预警类型"}, load_default=0, ) warning_effective_config = fields.String( required=False, metadata={"example": "预警触发表达式", "description": "预警触发表达式"}, load_default=None, ) is_calling = fields.Integer( required=False, metadata={"example": "是否报警", "description": "报警类型"}, load_default=0, ) calling_effective_config = fields.String( required=False, metadata={"example": "报警触发表达式", "description": "报警触发表达式"}, load_default=None, ) method_content = fields.String( required=False, metadata={"example": "方法节点", "description": "方法节点"}, load_default=None, ) status = fields.Integer( required=False, metadata={"example": 1, "description": "状态(0-禁用,1-启用)"}, load_default=None, )