device.py 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. """
  2. Pydantic schemas for Device model.
  3. """
  4. from datetime import datetime
  5. from pydantic import BaseModel
  6. class DeviceBase(BaseModel):
  7. """Base device schema."""
  8. mac_address: str
  9. class DeviceCreate(DeviceBase):
  10. """Schema for creating a device."""
  11. organization_id: int | None = None
  12. config: dict | None = None
  13. class DeviceUpdate(BaseModel):
  14. """Schema for updating a device."""
  15. organization_id: int | None = None
  16. status: str | None = None
  17. config: dict | None = None
  18. class DeviceResponse(DeviceBase):
  19. """Schema for device response."""
  20. id: int
  21. simple_id: int
  22. organization_id: int | None
  23. status: str
  24. last_seen_at: datetime | None
  25. config: dict
  26. created_at: datetime
  27. @property
  28. def display_name(self) -> str:
  29. """User-friendly device name."""
  30. return f"Receiver #{self.simple_id}"
  31. class Config:
  32. from_attributes = True
  33. class DeviceListResponse(BaseModel):
  34. """Schema for list of devices."""
  35. devices: list[DeviceResponse]
  36. total: int