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

129 行
3.3 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. battery: Optional[str] = None
  52. temperature: Optional[str] = None
  53. acceleration: Optional[str] = None
  54. heartRate: Optional[str] = None
  55. buttonPress: Optional[bool] = None
  56. class OperatorItem(BaseModel):
  57. id: UUID
  58. name: str
  59. phone: Optional[str] = None
  60. zones: List[UUID]
  61. groups: Optional[str] = None
  62. notes: Optional[str] = None
  63. building: Optional[UUID] = None
  64. class SubjectItem(BaseModel):
  65. id: UUID
  66. name: str
  67. role: Optional[str] = None
  68. phone: Optional[str] = None
  69. tracker: UUID
  70. groups: Optional[str] = None
  71. notes: Optional[str] = None
  72. building: Optional[UUID] = None
  73. class AlarmItem(BaseModel):
  74. id: UUID
  75. timestamp: Optional[str] = None
  76. type: Optional[str] = None
  77. status: Optional[str] = None
  78. gateway: Optional[UUID] = None
  79. gatewayMac: Optional[str] = None
  80. tracker: Optional[UUID] = None
  81. trackerBid: Optional[str] = None
  82. subject: Optional[UUID] = None
  83. subjectName: Optional[str] = None
  84. operator: Optional[UUID] = None
  85. operatorName: Optional[str] = None
  86. zone: Optional[UUID] = None
  87. zoneName: Optional[str] = None
  88. building: Optional[UUID] = None
  89. class TrackItem(BaseModel):
  90. id: UUID
  91. timestamp: Optional[str] = None
  92. type: Optional[str] = None
  93. status: Optional[str] = None
  94. gateway: Optional[UUID] = None
  95. gatewayMac: Optional[str] = None
  96. tracker: Optional[UUID] = None
  97. trackerMac: Optional[str] = None
  98. subject: Optional[UUID] = None
  99. subjectName: Optional[str] = None
  100. floor: Optional[UUID] = None
  101. signal: Optional[float] = None
  102. building: Optional[UUID] = None
  103. class TrackerZoneItem(BaseModel):
  104. id: UUID
  105. zoneList: List[UUID]
  106. tracker: UUID
  107. days: Optional[str] = None
  108. time: Optional[str] = None
  109. class ConfigItem(BaseModel):
  110. name: str
  111. min: str
  112. max: str
  113. pattern: str
  114. configs:List[str]
  115. propery: List[str]
  116. offset: str