From ddb2b3e43aa7d489a46dcf810297e8d529a8140d Mon Sep 17 00:00:00 2001 From: Jason Staack Date: Wed, 18 Mar 2026 21:50:57 -0500 Subject: [PATCH] feat(11-03): add site_id and site_name to DeviceResponse - Add site_id (Optional[UUID]) and site_name (Optional[str]) to backend DeviceResponse schema - Include site fields in _build_device_response helper - Add selectinload(Device.site) to _device_with_relations for eager loading - Add site_id and site_name to frontend DeviceResponse interface Co-Authored-By: Claude Opus 4.6 (1M context) --- backend/app/schemas/device.py | 2 ++ backend/app/services/device.py | 5 +++++ frontend/src/lib/api.ts | 2 ++ 3 files changed, 9 insertions(+) diff --git a/backend/app/schemas/device.py b/backend/app/schemas/device.py index adc8878..f11f141 100644 --- a/backend/app/schemas/device.py +++ b/backend/app/schemas/device.py @@ -88,6 +88,8 @@ class DeviceResponse(BaseModel): tls_mode: str = "auto" tags: list[DeviceTagRef] = [] groups: list[DeviceGroupRef] = [] + site_id: Optional[uuid.UUID] = None + site_name: Optional[str] = None created_at: datetime model_config = {"from_attributes": True} diff --git a/backend/app/services/device.py b/backend/app/services/device.py index 0aef536..27b71a5 100644 --- a/backend/app/services/device.py +++ b/backend/app/services/device.py @@ -109,15 +109,20 @@ def _build_device_response(device: Device) -> DeviceResponse: tls_mode=device.tls_mode, tags=tags, groups=groups, + site_id=device.site_id, + site_name=device.site.name if device.site else None, created_at=device.created_at, ) def _device_with_relations(): """Return a select() for Device with tags and groups eagerly loaded.""" + from app.models.site import Site # noqa: F811 + return select(Device).options( selectinload(Device.tag_assignments).selectinload(DeviceTagAssignment.tag), selectinload(Device.group_memberships).selectinload(DeviceGroupMembership.group), + selectinload(Device.site), ) diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts index 077acef..484078c 100644 --- a/frontend/src/lib/api.ts +++ b/frontend/src/lib/api.ts @@ -306,6 +306,8 @@ export interface DeviceResponse { tls_mode: string tags: DeviceTagRef[] groups: DeviceGroupRef[] + site_id: string | null + site_name: string | null created_at: string }