Added support for new parameters (hour, weekday, day) for grid endpoints

Rafael
Rafael M. Martins 7 months ago
parent a78ead60c5
commit 0b9b06863f
  1. 28
      py/main.py

@ -271,6 +271,10 @@ def grid_yearly():
sen = request.args.get('sensor', 'Temp_MP1_1_Pos1')
typ = request.args.get('type', 'celsius')
yea = request.args.get('year', '2023')
hou = int(request.args.get('hour', '0'))
# Make sure format is right
hou = f'{hou:02d}'
# Get the columns for the sensor
table_name, col_name, fam = get_table_col_fam(hus, sen, typ)
@ -278,11 +282,11 @@ def grid_yearly():
sql_col_names = ','.join(f'"{x}"' for x in col_names)
query = f'SELECT {sql_col_names} FROM {table_name}'
query += f' WHERE Year=?'
query += f' WHERE Year=? AND Hour=?'
query += f' GROUP BY Year,Month,Day;'
conn = sqlite3.connect(DB_NAMES[hus])
cur = conn.execute(query, [yea])
cur = conn.execute(query, [yea, hou])
res_all = cur.fetchall()
out = []
@ -301,8 +305,10 @@ def grid_monthly():
typ = request.args.get('type', 'celsius')
yea = request.args.get('year', '2023')
mon = int(request.args.get('month', '1'))
hou = int(request.args.get('hour', '0'))
# Make sure the format is right
# Make sure format is right
hou = f'{hou:02d}'
mon = f'{mon:02d}'
# Get the columns for the sensor
@ -311,11 +317,11 @@ def grid_monthly():
sql_col_names = ','.join(f'"{x}"' for x in col_names)
query = f'SELECT {sql_col_names} FROM {table_name}'
query += f' WHERE Year=? AND Month=?'
query += f' WHERE Year=? AND Month=? AND Hour=?'
query += f' GROUP BY Year,Month,Day;'
conn = sqlite3.connect(DB_NAMES[hus])
cur = conn.execute(query, [yea, mon])
cur = conn.execute(query, [yea, mon, hou])
res_all = cur.fetchall()
out = []
@ -333,7 +339,11 @@ def grid_weekly():
sen = request.args.get('sensor', 'Temp_MP1_1_Pos1')
typ = request.args.get('type', 'celsius')
yea = int(request.args.get('year', '2023'))
wee = int(request.args.get('week', '1'))
wee = int(request.args.get('week', '1'))
hou = int(request.args.get('hour', '0'))
# Make sure format is right
hou = f'{hou:02d}'
monday = date.fromisocalendar(yea, wee, 1)
weekday_names = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday']
@ -346,12 +356,14 @@ def grid_weekly():
sql_col_names = ','.join(f'"{x}"' for x in col_names)
# Complex query to get each day separately
query = f'SELECT {sql_col_names} FROM {table_name} WHERE '
query += 'OR'.join(['(Year=? AND Month=? AND Day=?)'] * len(weekdays))
query = f'SELECT {sql_col_names} FROM {table_name} WHERE ('
query += 'OR'.join(['(Year=? AND Month=? AND Day=?)'] * len(weekdays))
query += ') AND Hour=?'
query += f' GROUP BY Year,Month,Day;'
# Break each date into three components then merge them all (in a flat list)
params = [y for d in list(weekdays.keys()) for y in d.split('-')]
params.append(hou)
conn = sqlite3.connect(DB_NAMES[hus])
cur = conn.execute(query, params)

Loading…
Cancel
Save