# 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