您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符
 
 
 
 

114 行
3.0 KiB

  1. from pydantic import BaseModel
  2. from typing import Optional
  3. from uuid import UUID
  4. from typing import Optional, Union
  5. from typing import List
  6. class BuildingItem(BaseModel):
  7. id: UUID
  8. name: str
  9. city: Optional[str] = None
  10. address: Optional[str] = None
  11. latitude: Optional[float] = None
  12. longitude: Optional[float] = None
  13. class FloorItem(BaseModel):
  14. id: UUID
  15. name: str
  16. image: Optional[str] = None
  17. description: Optional[str] = None
  18. scale: Optional[float] = None
  19. building: Optional[UUID] = None
  20. class ZoneItem(BaseModel):
  21. id: UUID
  22. name: str
  23. groups: List[UUID]
  24. floor: Optional[UUID] = None
  25. building: Optional[UUID] = None
  26. class GatewayItem(BaseModel):
  27. id: UUID
  28. name: str
  29. mac: Optional[str] = None
  30. status: Optional[Union[str, bool]] = None
  31. model: Optional[str] = None
  32. ip: Optional[str] = None
  33. position: Optional[str] = None
  34. x: Optional[float] = None
  35. y: Optional[float] = None
  36. notes: Optional[str] = None
  37. floor: Optional[UUID] = None
  38. building: Optional[UUID] = None
  39. class TrackerItem(BaseModel):
  40. id: UUID
  41. name: str
  42. mac: Optional[str] = None
  43. status: Optional[str] = None
  44. model: Optional[str] = None
  45. position: Optional[str] = None
  46. notes: Optional[str] = None
  47. x: Optional[float] = None
  48. y: Optional[float] = None
  49. floor: Optional[UUID] = None
  50. building: Optional[UUID] = None
  51. class OperatorItem(BaseModel):
  52. id: UUID
  53. name: str
  54. phone: Optional[str] = None
  55. zones: List[UUID]
  56. groups: Optional[str] = None
  57. notes: Optional[str] = None
  58. building: Optional[UUID] = None
  59. class SubjectItem(BaseModel):
  60. id: UUID
  61. name: str
  62. role: Optional[str] = None
  63. phone: Optional[str] = None
  64. tracker: UUID
  65. groups: Optional[str] = None
  66. notes: Optional[str] = None
  67. building: Optional[UUID] = None
  68. class AlarmItem(BaseModel):
  69. id: UUID
  70. timestamp: Optional[str] = None
  71. type: Optional[str] = None
  72. status: Optional[str] = None
  73. gateway: Optional[UUID] = None
  74. gatewayMac: Optional[str] = None
  75. tracker: Optional[UUID] = None
  76. trackerBid: Optional[str] = None
  77. subject: Optional[UUID] = None
  78. subjectName: Optional[str] = None
  79. operator: Optional[UUID] = None
  80. operatorName: Optional[str] = None
  81. zone: Optional[UUID] = None
  82. zoneName: Optional[str] = None
  83. building: Optional[UUID] = None
  84. class TrackItem(BaseModel):
  85. id: UUID
  86. timestamp: Optional[str] = None
  87. type: Optional[str] = None
  88. status: Optional[str] = None
  89. gateway: Optional[UUID] = None
  90. gatewayMac: Optional[str] = None
  91. tracker: Optional[UUID] = None
  92. trackerMac: Optional[str] = None
  93. subject: Optional[UUID] = None
  94. subjectName: Optional[str] = None
  95. floor: Optional[UUID] = None
  96. signal: Optional[float] = None
  97. building: Optional[UUID] = None
  98. class TrackerZoneItem(BaseModel):
  99. id: UUID
  100. zoneList: List[UUID]
  101. tracker: UUID
  102. days: Optional[str] = None
  103. time: Optional[str] = None