This commit is contained in:
@ -1,3 +1,4 @@
|
||||
from datetime import UTC, datetime
|
||||
from json import dumps
|
||||
from logging import getLogger
|
||||
from urllib.parse import quote, urlencode
|
||||
@ -65,18 +66,6 @@ class TDN_API(AsyncClient):
|
||||
async def observations_measurement_search(
|
||||
self, access_token: str, observationUid: str
|
||||
):
|
||||
# data = urlencode(
|
||||
# dumps(
|
||||
# {
|
||||
# 'where': {'observationUid': observationUid},
|
||||
# 'relations': [
|
||||
# 'measurement',
|
||||
# 'obsrvMtMetrics',
|
||||
# 'obsrvMtMetrics.metric',
|
||||
# ],
|
||||
# }
|
||||
# )
|
||||
# )
|
||||
encoded_query = urlencode(
|
||||
{
|
||||
'query': dumps(
|
||||
@ -105,3 +94,69 @@ class TDN_API(AsyncClient):
|
||||
case _:
|
||||
self.logger.error(res.json())
|
||||
raise e.UnknownException
|
||||
|
||||
async def create_series(
|
||||
self, access_token: str, observationUid: str, obsrvMeasurementUid: str
|
||||
):
|
||||
now = datetime.now(UTC)
|
||||
tz_offset = now.strftime('%z')
|
||||
formatted_offset = (
|
||||
f'{tz_offset[:3]}:{tz_offset[3:]}' if tz_offset else '+0000'
|
||||
)
|
||||
date_str = (
|
||||
f'{now.strftime("%Y-%m-%d %H:%M:%S.%f")[:-3]} {formatted_offset}'
|
||||
)
|
||||
|
||||
res = await self.patch(
|
||||
'/ddn/observation/series',
|
||||
headers={'Authorization': f'Bearer {access_token}'},
|
||||
json={
|
||||
'observationUid': observationUid,
|
||||
'obsrvMeasurementUid': obsrvMeasurementUid,
|
||||
'date': date_str,
|
||||
},
|
||||
)
|
||||
|
||||
match res.status_code:
|
||||
case st.HTTP_200_OK:
|
||||
return s.SeriesModel.model_validate(res.json())
|
||||
case _:
|
||||
self.logger.error(res.json())
|
||||
raise e.UnknownException
|
||||
|
||||
async def create_series_values(
|
||||
self,
|
||||
access_token: str,
|
||||
seriesUid: str,
|
||||
obsrvMtMetricUid: str,
|
||||
*,
|
||||
nvalue: str | None = None,
|
||||
fvalue: str | None = None,
|
||||
svalue: str | None = None,
|
||||
):
|
||||
data = {
|
||||
'seriesUid': seriesUid,
|
||||
'obsrvMtMetricUid': obsrvMtMetricUid,
|
||||
}
|
||||
|
||||
if nvalue is not None:
|
||||
data['nvalue'] = nvalue
|
||||
|
||||
if fvalue is not None:
|
||||
data['fvalue'] = fvalue
|
||||
|
||||
if svalue is not None:
|
||||
data['svalue'] = svalue
|
||||
|
||||
res = await self.patch(
|
||||
'/ddn/observation/series-values',
|
||||
headers={'Authorization': f'Bearer {access_token}'},
|
||||
json=data,
|
||||
)
|
||||
|
||||
match res.status_code:
|
||||
case st.HTTP_200_OK:
|
||||
return s.SeriesValueModel.model_validate(res.json())
|
||||
case _:
|
||||
self.logger.error(res.json())
|
||||
raise e.UnknownException
|
||||
|
||||
@ -68,7 +68,7 @@ class ObservationMeasurementModel(BaseModel):
|
||||
timeFrequency: int
|
||||
timePeriod: int
|
||||
timePeriodMeasureUid: str
|
||||
timeOfDay: list[str]
|
||||
timeOfDay: list[str] | None
|
||||
comment: str | None
|
||||
mobileId: str | None
|
||||
measurement: MeasurementModel
|
||||
@ -78,3 +78,33 @@ class ObservationMeasurementModel(BaseModel):
|
||||
class ObservationMeasurementsModel(BaseModel):
|
||||
items: list[ObservationMeasurementModel]
|
||||
total: int
|
||||
|
||||
|
||||
class SeriesRealmModel(BaseModel):
|
||||
uid: str
|
||||
|
||||
|
||||
class SeriesModel(BaseModel):
|
||||
observationUid: str
|
||||
obsrvMeasurementUid: str
|
||||
date: str
|
||||
realm: SeriesRealmModel
|
||||
mobileId: str | None
|
||||
uid: str
|
||||
createdAt: datetime
|
||||
updatedAt: datetime
|
||||
|
||||
|
||||
class SeriesValueModel(BaseModel):
|
||||
uid: str
|
||||
seriesUid: str
|
||||
obsrvMtMetricUid: str
|
||||
realm: SeriesRealmModel
|
||||
createdAt: datetime
|
||||
updatedAt: datetime
|
||||
nvalue: str | None
|
||||
fvalue: str | None
|
||||
svalue: str | None
|
||||
filepath: str | None
|
||||
mobileId: str | None
|
||||
tisId: str | None
|
||||
|
||||
Reference in New Issue
Block a user