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

113 行
2.9 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. scale: Optional[float] = None
  18. building: Optional[UUID] = None
  19. class ZoneItem(BaseModel):
  20. id: UUID
  21. name: str
  22. groups: List[UUID]
  23. floor: Optional[UUID] = None
  24. building: Optional[UUID] = None
  25. class GatewayItem(BaseModel):
  26. id: UUID
  27. name: str
  28. mac: Optional[str] = None
  29. status: Optional[Union[str, bool]] = None
  30. model: Optional[str] = None
  31. ip: Optional[str] = None
  32. position: Optional[str] = None
  33. x: Optional[float] = None
  34. y: Optional[float] = None
  35. notes: Optional[str] = None
  36. floor: Optional[UUID] = None
  37. building: Optional[UUID] = None
  38. class TrackerItem(BaseModel):
  39. id: UUID
  40. name: str
  41. mac: Optional[str] = None
  42. status: Optional[str] = None
  43. model: Optional[str] = None
  44. position: Optional[str] = None
  45. notes: Optional[str] = None
  46. x: Optional[float] = None
  47. y: Optional[float] = None
  48. floor: Optional[UUID] = None
  49. building: Optional[UUID] = None
  50. class OperatorItem(BaseModel):
  51. id: UUID
  52. name: str
  53. phone: Optional[str] = None
  54. zones: Optional[str] = None
  55. groups: Optional[str] = None
  56. notes: Optional[str] = None
  57. building: Optional[UUID] = None
  58. class SubjectItem(BaseModel):
  59. id: UUID
  60. name: str
  61. role: Optional[str] = None
  62. phone: Optional[str] = None
  63. zones: Optional[str] = None
  64. groups: Optional[str] = None
  65. notes: Optional[str] = None
  66. building: Optional[UUID] = None
  67. class AlarmItem(BaseModel):
  68. id: UUID
  69. timestamp: Optional[str] = None
  70. type: Optional[str] = None
  71. status: Optional[str] = None
  72. gateway: Optional[UUID] = None
  73. gatewayMac: Optional[str] = None
  74. tracker: Optional[UUID] = None
  75. trackerBid: Optional[str] = None
  76. subject: Optional[UUID] = None
  77. subjectName: Optional[str] = None
  78. operator: Optional[UUID] = None
  79. operatorName: Optional[str] = None
  80. zone: Optional[UUID] = None
  81. zoneName: Optional[str] = None
  82. building: Optional[UUID] = None
  83. class TrackItem(BaseModel):
  84. id: UUID
  85. timestamp: Optional[str] = None
  86. type: Optional[str] = None
  87. status: Optional[str] = None
  88. gateway: Optional[UUID] = None
  89. gatewayMac: Optional[str] = None
  90. tracker: Optional[UUID] = None
  91. trackerMac: Optional[str] = None
  92. subject: Optional[str] = None
  93. subjectName: Optional[str] = None
  94. floor: Optional[str] = None
  95. signal: Optional[float] = None
  96. building: Optional[UUID] = None
  97. class TrackerZoneItem(BaseModel):
  98. id: UUID
  99. zoneList: List[UUID]
  100. tracker: UUID
  101. days: Optional[str] = None
  102. time: Optional[str] = None