Skip to content

Commit bfe6df3

Browse files
committed
feat(timeline): add endpoint to retrieve timeline of a household
1 parent 2c4bc0a commit bfe6df3

3 files changed

Lines changed: 12 additions & 5 deletions

File tree

surehub_api/entities/enums.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ class DoorSide(IntEnum):
8484

8585

8686
class DoorStatus(IntEnum):
87+
VALUE_0 = 0
8788
VALUE_4 = 4
8889
VALUE_6 = 6
8990
VALUE_8 = 8

surehub_api/routers/households.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
from surehub_api.entities import official
77
from surehub_api.entities.openapi import Tags
8-
from surehub_api.services import households, reports
8+
from surehub_api.services import households, reports, timeline
99

1010
router = APIRouter(
1111
prefix="/households",
@@ -70,3 +70,9 @@ async def get_devices_of_household(household_id: int) -> List[official.Device]:
7070
response_model_exclude_none=True)
7171
async def get_device_of_household(household_id: int, device_id: int) -> official.Device:
7272
return households.get_device_of_household(household_id, device_id)
73+
74+
75+
@router.get("/{household_id}/timeline",
76+
response_model_exclude_none=True)
77+
async def get_timeline_of_household(household_id: int) -> list[official.Timeline]:
78+
return timeline.get_timeline_of_household(household_id)

surehub_api/services/timeline.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
import math
2-
from typing import Any
32

43
from fastapi import HTTPException
54

65
from surehub_api.config import settings
6+
from surehub_api.entities import official
77
from surehub_api.services import api
88
from surehub_api.utils import response_handler
99

1010

11-
def get_timeline_of_household(household_id: int) -> list[dict[str, Any]]:
11+
def get_timeline_of_household(household_id: int) -> list[official.Timeline]:
1212
uri = f"{settings.endpoint}/api/timeline/household/{household_id}"
1313

14-
result = []
14+
result: list[official.Timeline] = []
1515
fetch_size = 100
1616

1717
response = api.get(uri)
@@ -27,6 +27,6 @@ def get_timeline_of_household(household_id: int) -> list[dict[str, Any]]:
2727
for i in range(1, request_count + 1):
2828
payload = {'page_size': fetch_size, 'page': i}
2929
response2 = api.get(uri, params=payload)
30-
result += response_handler.parse(response2)
30+
result += response_handler.parse(response2, model=list[official.Timeline])
3131

3232
return result

0 commit comments

Comments
 (0)