|
1 | 1 | import uuid |
2 | 2 | from ninja import Router, Path |
3 | | -from typing import Optional |
| 3 | +from typing import Optional, Literal |
| 4 | +from datetime import datetime |
4 | 5 | from django.db import transaction |
5 | 6 | from hydroserver.security import bearer_auth, session_auth, anonymous_auth |
6 | 7 | from hydroserver.http import HydroServerHttpRequest |
7 | | -from sta.schemas import DatastreamGetResponse, DatastreamPostBody, DatastreamPatchBody |
| 8 | +from sta.schemas import ( |
| 9 | + DatastreamGetResponse, |
| 10 | + DatastreamPostBody, |
| 11 | + DatastreamPatchBody, |
| 12 | + ObservationsGetResponse, |
| 13 | +) |
8 | 14 | from sta.services import DatastreamService |
9 | 15 |
|
10 | 16 | datastream_router = Router(tags=["Datastreams"]) |
@@ -142,13 +148,27 @@ def get_datastream_csv(request: HydroServerHttpRequest, datastream_id: Path[uuid |
142 | 148 | @datastream_router.get( |
143 | 149 | "/{datastream_id}/observations", |
144 | 150 | auth=[session_auth, bearer_auth, anonymous_auth], |
145 | | - response={200: list[list], 403: str, 404: str}, |
| 151 | + response={200: ObservationsGetResponse, 403: str, 404: str}, |
146 | 152 | ) |
147 | | -def get_datastream_observations(request: HydroServerHttpRequest, datastream_id: Path[uuid.UUID]): |
| 153 | +def get_datastream_observations( |
| 154 | + request: HydroServerHttpRequest, |
| 155 | + datastream_id: Path[uuid.UUID], |
| 156 | + phenomenon_start_time: Optional[datetime] = None, |
| 157 | + phenomenon_end_time: Optional[datetime] = None, |
| 158 | + page: int = 1, |
| 159 | + page_size: Optional[int] = None, |
| 160 | + order: Literal["asc", "desc"] = "desc", |
| 161 | +): |
148 | 162 | """ |
149 | 163 | Get Datastream Observations |
150 | 164 | """ |
151 | 165 |
|
152 | 166 | return datastream_service.list_observations( |
153 | | - user=request.authenticated_user, uid=datastream_id |
| 167 | + user=request.authenticated_user, |
| 168 | + uid=datastream_id, |
| 169 | + phenomenon_start_time=phenomenon_start_time, |
| 170 | + phenomenon_end_time=phenomenon_end_time, |
| 171 | + page=page, |
| 172 | + page_size=page_size, |
| 173 | + order=order, |
154 | 174 | ) |
0 commit comments