from dataclasses import field from datetime import datetime from marshmallow_dataclass import dataclass from typing import ClassVar from iti.applications.common.enums import StatusEnum from iti.applications.common.utils.schema import BaseSchema, Pagination @dataclass(base_schema=BaseSchema) class RoleQuery(Pagination): """ 角色查询请求 """ name: str = field( metadata={ "required": False, "metadata": {"example": "管理员", "description": "角色名称"}, }, default=None, ) code: str = field( metadata={ "required": False, "metadata": {"example": "ADMIN", "description": "角色编码"}, }, default=None, ) status: StatusEnum = field( metadata={ "required": False, "by_value": True, "metadata": {"example": "enabled", "description": "状态"}, }, default=None, ) createdAt: list[datetime] = field( metadata={ "required": False, "data_key": "createdAt[]", "metadata": { "example": ["2025-01-01 00:00:00", "2025-01-01 23:59:59"], "description": "创建时间范围", }, }, default=None, ) updatedAt: list[datetime] = field( metadata={ "required": False, "data_key": "updatedAt[]", "metadata": { "example": ["2025-01-01 00:00:00", "2025-01-01 23:59:59"], "description": "更新时间范围", }, }, default=None, ) Schema: ClassVar[BaseSchema] = BaseSchema # For the type check @dataclass(base_schema=BaseSchema) class RoleCreateRequest: """ 创建角色请求 """ name: str = field( metadata={ "required": True, "metadata": {"example": "管理员", "description": "角色名称"}, } ) code: str = field( metadata={ "required": True, "metadata": {"example": "ADMIN", "description": "角色编码"}, } ) desc: str = field( metadata={ "required": False, "metadata": {"example": "管理员角色", "description": "角色描述"}, }, default="", ) sort: int = field( metadata={ "required": False, "metadata": {"example": 0, "description": "角色排序"}, }, default=0, ) status: StatusEnum = field( metadata={ "required": False, "by_value": True, "metadata": {"example": "enabled", "description": "状态"}, }, default=StatusEnum.ENABLED, ) Schema: ClassVar[BaseSchema] = BaseSchema # For the type check @dataclass(base_schema=BaseSchema) class RoleUpdateRequest: """ 更新角色请求 """ name: str = field( metadata={ "required": False, "metadata": {"example": "管理员", "description": "角色名称"}, }, default=None, ) code: str = field( metadata={ "required": False, "metadata": {"example": "ADMIN", "description": "角色编码"}, }, default=None, ) desc: str = field( metadata={ "required": False, "metadata": {"example": "管理员角色", "description": "角色描述"}, }, default=None, ) sort: int = field( metadata={ "required": False, "metadata": {"example": 0, "description": "角色排序"}, }, default=None, ) status: StatusEnum = field( metadata={ "required": False, "by_value": True, "metadata": {"example": "enabled", "description": "状态"}, }, default=None, ) permissions: list[str] = field( metadata={ "required": False, "metadata": {"example": ["1", "2", "3"], "description": "权限列表"}, }, default=None, ) Schema: ClassVar[BaseSchema] = BaseSchema # For the type check