From aedbe3bbfb6386c36024d689fda126ff108fead4 Mon Sep 17 00:00:00 2001 From: gtitov Date: Sat, 23 Oct 2021 19:00:51 +0300 Subject: [PATCH] Add avaliable dates endpoints for stations and net --- main.py | 46 +++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 5 deletions(-) diff --git a/main.py b/main.py index b8c4489..95d63b7 100644 --- a/main.py +++ b/main.py @@ -114,7 +114,10 @@ async def get_stations_parameter_values(parameter: ParameterName, start_datetime stations_values = cur.fetchall() measured = [row for row in stations_values if not row[3]] - measured_max_datetime = max([row[1] for row in measured]) + try: + measured_max_datetime = max([row[1] for row in measured]) + except: + return [] forecast = [row for row in stations_values if row[1] > measured_max_datetime] clear_stations_values = measured + forecast @@ -159,6 +162,21 @@ async def get_one_station_values(station_id: int, start_datetime: datetime, end_ "pm25": [row[2] for row in one_station_values if row[1] == 5] } +@app.get("/stations/dates") +async def get_stations_dates(): + """Возращает минимальную и максимальную даты, которые есть в таблице сетки. + """ + + cur.execute( + f"""SELECT + MIN(datetime), MAX(datetime) + FROM stations_all_params + """ + ) + + stations_dates = cur.fetchall() + return(stations_dates[0]) + @app.get("/basenet") async def get_basenet_geo(): @@ -185,7 +203,7 @@ async def get_basenet_geo(): "station_id": row[3] } for row in basenet - ] + ] @app.get("/net/{parameter}/{start_datetime}/{end_datetime}") @@ -205,13 +223,16 @@ async def get_net_parameter_values(parameter: ParameterName, start_datetime: dat FROM net_all_params JOIN parameters ON net_all_params.parameter = parameters.parameter_id WHERE parameter_name = '{parameter}' AND datetime >= strftime('%s', '{start_datetime}') AND datetime < strftime('%s', '{end_datetime}') - """ + """ ) net_values = cur.fetchall() measured = [row for row in net_values if not row[3]] - measured_max_datetime = max([row[1] for row in measured]) + try: + measured_max_datetime = max([row[1] for row in measured]) + except: + [] forecast = [row for row in net_values if row[1] > measured_max_datetime] clear_net_values = measured + forecast @@ -223,4 +244,19 @@ async def get_net_parameter_values(parameter: ParameterName, start_datetime: dat "forecast": row[3] } for row in clear_net_values - ] \ No newline at end of file + ] + +@app.get("/net/dates") +async def get_net_dates(): + """Возращает минимальную и максимальную даты, которые есть в таблице сетки. + """ + + cur.execute( + f"""SELECT + MIN(datetime), MAX(datetime) + FROM net_all_params + """ + ) + + net_dates = cur.fetchall() + return(net_dates[0]) \ No newline at end of file