81 lines
1.3 KiB
Python
81 lines
1.3 KiB
Python
# schemas.py
|
|
from datetime import datetime
|
|
from typing import List, Optional
|
|
|
|
from ninja import Schema
|
|
|
|
|
|
# ========== 菜单 Schema ==========
|
|
class MenuBase(Schema):
|
|
name: str
|
|
code: str
|
|
path: Optional[str] = None
|
|
component: Optional[str] = None
|
|
icon: Optional[str] = None
|
|
parent_id: Optional[int] = None
|
|
menu_type: int = 1
|
|
order_num: int = 0
|
|
permission_code: Optional[str] = None
|
|
status: bool = True
|
|
|
|
|
|
class MenuCreate(MenuBase):
|
|
pass
|
|
|
|
|
|
class MenuUpdate(MenuBase):
|
|
pass
|
|
|
|
|
|
class MenuOut(MenuBase):
|
|
id: int
|
|
created_at: datetime
|
|
|
|
|
|
# ========== 角色 Schema ==========
|
|
class RoleBase(Schema):
|
|
name: str
|
|
code: str
|
|
description: Optional[str] = None
|
|
status: bool = True
|
|
|
|
|
|
class RoleCreate(RoleBase):
|
|
pass
|
|
|
|
|
|
class RoleUpdate(RoleBase):
|
|
pass
|
|
|
|
|
|
class RoleOut(RoleBase):
|
|
id: int
|
|
created_at: datetime
|
|
|
|
|
|
# ========== 关联 Schema ==========
|
|
class RoleMenuAssign(Schema):
|
|
menu_ids: List[int]
|
|
|
|
|
|
class UserRoleAssign(Schema):
|
|
role_ids: List[int]
|
|
|
|
|
|
class DepartmentBase(Schema):
|
|
name: str
|
|
parent_id: Optional[int] = None
|
|
order: int = 0
|
|
|
|
|
|
class DepartmentCreate(DepartmentBase):
|
|
pass
|
|
|
|
|
|
class DepartmentUpdate(DepartmentBase):
|
|
pass
|
|
|
|
|
|
class DepartmentOut(DepartmentBase):
|
|
id: int
|