25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

140 lines
3.5 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. floornumber: int
  17. image: Optional[str] = None
  18. description: Optional[str] = None
  19. scale: Optional[float] = None
  20. building: Optional[UUID] = None
  21. class ZoneItem(BaseModel):
  22. id: UUID
  23. name: str
  24. groups: List[UUID]
  25. floor: Optional[UUID] = None
  26. building: Optional[UUID] = None
  27. class GatewayItem(BaseModel):
  28. id: UUID
  29. name: str
  30. mac: Optional[str] = None
  31. status: Optional[Union[str, bool]] = None
  32. model: Optional[str] = None
  33. ip: Optional[str] = None
  34. position: Optional[str] = None
  35. x: Optional[float] = None
  36. y: Optional[float] = None
  37. notes: Optional[str] = None
  38. floor: Optional[UUID] = None
  39. building: Optional[UUID] = None
  40. class TrackerItem(BaseModel):
  41. id: UUID
  42. name: str
  43. mac: Optional[str] = None
  44. status: Optional[str] = None
  45. model: Optional[str] = None
  46. position: Optional[str] = None
  47. notes: Optional[str] = None
  48. x: Optional[float] = None
  49. y: Optional[float] = None
  50. floor: Optional[UUID] = None
  51. building: Optional[UUID] = None
  52. battery: Optional[str] = None
  53. temperature: Optional[str] = None
  54. acceleration: Optional[str] = None
  55. heartRate: Optional[str] = None
  56. buttonPress: Optional[bool] = None
  57. class SettingItem(BaseModel):
  58. id: str
  59. name: str
  60. role: str
  61. unit: int
  62. update: Optional[int] = None
  63. debug: bool
  64. debugFields: Optional[List[str]] = None
  65. language: str
  66. class OperatorItem(BaseModel):
  67. id: UUID
  68. name: str
  69. phone: Optional[str] = None
  70. zones: List[UUID]
  71. groups: Optional[str] = None
  72. notes: Optional[str] = None
  73. building: Optional[UUID] = None
  74. class SubjectItem(BaseModel):
  75. id: UUID
  76. name: str
  77. role: Optional[str] = None
  78. phone: Optional[str] = None
  79. tracker: UUID
  80. groups: Optional[str] = None
  81. notes: Optional[str] = None
  82. building: Optional[UUID] = None
  83. class AlarmItem(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. trackerBid: Optional[str] = None
  92. subject: Optional[UUID] = None
  93. subjectName: Optional[str] = None
  94. operator: Optional[UUID] = None
  95. operatorName: Optional[str] = None
  96. zone: Optional[UUID] = None
  97. zoneName: Optional[str] = None
  98. building: Optional[UUID] = None
  99. class TrackItem(BaseModel):
  100. id: UUID
  101. timestamp: Optional[str] = None
  102. type: Optional[str] = None
  103. status: Optional[str] = None
  104. gateway: Optional[UUID] = None
  105. gatewayMac: Optional[str] = None
  106. tracker: Optional[UUID] = None
  107. trackerMac: Optional[str] = None
  108. subject: Optional[UUID] = None
  109. subjectName: Optional[str] = None
  110. floor: Optional[UUID] = None
  111. signal: Optional[float] = None
  112. building: Optional[UUID] = None
  113. class TrackerZoneItem(BaseModel):
  114. id: UUID
  115. zoneList: List[UUID]
  116. tracker: UUID
  117. days: Optional[str] = None
  118. time: Optional[str] = None
  119. class ConfigItem(BaseModel):
  120. name: str
  121. min: str
  122. max: str
  123. pattern: str
  124. configs:List[str]
  125. propery: List[str]
  126. offset: str