from apiflask import fields from iti.applications.common.enums import MenuTypeEnum, StatusEnum from iti.applications.common.utils.schema import BaseSchema from iti_system.models import SysMenuMetaSchema class MenuCreateRequest(BaseSchema): """ 创建菜单请求 """ name = fields.String( required=True, metadata={"example": "菜单名称", "description": "菜单名称"}, ) type = fields.Enum( MenuTypeEnum, by_value=True, required=True, metadata={"example": "menu", "description": "菜单类型"}, ) path = fields.String( required=True, metadata={"example": "menu", "description": "菜单路径"} ) component = fields.String( required=False, metadata={"example": "menu", "description": "菜单组件"}, load_default=None, ) redirect = fields.String( required=False, metadata={"example": "menu", "description": "菜单重定向"}, load_default=None, ) sort = fields.Integer( required=False, metadata={"example": 0, "description": "菜单排序"}, load_default=0, ) auth_code = fields.String( data_key="authCode", required=False, metadata={"example": "sys:menu:list", "description": "权限编码"}, load_default=None, ) meta = fields.Nested( SysMenuMetaSchema, required=False, metadata={"example": {}, "description": "菜单元数据"}, load_default={}, ) status = fields.Enum( StatusEnum, by_value=True, required=False, metadata={"example": "enabled", "description": "状态"}, load_default=StatusEnum.ENABLED, ) parent_id = fields.String( data_key="parentId", required=False, metadata={"example": "0", "description": "父菜单ID"}, load_default=None, ) class MenuUpdateRequest(BaseSchema): """ 更新菜单请求 """ type = fields.Enum( MenuTypeEnum, by_value=True, required=False, metadata={"example": "menu", "description": "菜单类型"}, load_default=None, ) name = fields.String( required=False, metadata={"example": "菜单名称", "description": "菜单名称"}, load_default=None, ) path = fields.String( required=False, metadata={"example": "menu", "description": "菜单路径"}, load_default=None, ) component = fields.String( required=False, metadata={"example": "menu", "description": "菜单组件"}, load_default=None, ) sort = fields.Integer( required=False, metadata={"example": 0, "description": "菜单排序"}, load_default=None, ) auth_code = fields.String( data_key="authCode", required=False, metadata={"example": "sys:menu:list", "description": "权限编码"}, load_default=None, ) meta = fields.Nested( SysMenuMetaSchema, required=False, metadata={"example": {}, "description": "菜单元数据"}, load_default=None, ) status = fields.Enum( StatusEnum, by_value=True, required=False, metadata={"example": "enabled", "description": "状态"}, load_default=None, ) parent_id = fields.String( data_key="parentId", required=False, metadata={"example": "0", "description": "父菜单ID"}, load_default=None, ) class MenuExistsRequest(BaseSchema): """ 检查菜单是否存在请求 """ id = fields.String( required=False, metadata={"example": "0", "description": "菜单ID"}, load_default=None, ) path = fields.String( required=False, metadata={"example": "menu", "description": "菜单路径"}, ) name = fields.String( required=False, metadata={"example": "菜单名称", "description": "菜单名称"}, )