You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
4.1 KiB
Python

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