menu.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. from typing import Optional, List
  2. from pydantic import BaseModel, ConfigDict
  3. from pydantic.alias_generators import to_camel
  4. class MenuCreate(BaseModel):
  5. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  6. parent_id: int = 0
  7. menu_name: str
  8. menu_code: Optional[str] = None
  9. menu_type: int
  10. path: Optional[str] = None
  11. sort_order: int = 0
  12. status: int = 1
  13. class MenuUpdate(BaseModel):
  14. model_config = ConfigDict(populate_by_name=True, alias_generator=to_camel)
  15. parent_id: Optional[int] = None
  16. menu_name: Optional[str] = None
  17. menu_code: Optional[str] = None
  18. menu_type: Optional[int] = None
  19. path: Optional[str] = None
  20. sort_order: Optional[int] = None
  21. status: Optional[int] = None
  22. class MenuOut(BaseModel):
  23. model_config = ConfigDict(from_attributes=True, populate_by_name=True, alias_generator=to_camel)
  24. id: int
  25. parent_id: int
  26. menu_name: str
  27. menu_code: Optional[str] = None
  28. menu_type: int
  29. path: Optional[str] = None
  30. sort_order: int
  31. status: int
  32. children: Optional[List["MenuOut"]] = None
  33. class MenuTreeOut(MenuOut):
  34. pass
  35. MenuOut.model_rebuild()