Auto-update: Tue Aug 6 22:44:42 PDT 2024
This commit is contained in:
parent
c0f3690beb
commit
b14a6837e1
2 changed files with 26 additions and 17 deletions
|
@ -859,17 +859,26 @@ class APIConfig(BaseModel):
|
||||||
update_cols = ', '.join([f"{col} = EXCLUDED.{col}" for col in columns[1:] if col not in ['id', 'version', 'server_id']])
|
update_cols = ', '.join([f"{col} = EXCLUDED.{col}" for col in columns[1:] if col not in ['id', 'version', 'server_id']])
|
||||||
|
|
||||||
query = f"""
|
query = f"""
|
||||||
INSERT INTO {table_name} ({insert_cols})
|
WITH new_version AS (
|
||||||
VALUES ({insert_vals})
|
SELECT COALESCE(MAX(version), 0) + 1 as next_version
|
||||||
|
FROM {table_name}
|
||||||
|
WHERE id = (SELECT id FROM {table_name} WHERE {columns[1]} = ${1} FOR UPDATE)
|
||||||
|
)
|
||||||
|
INSERT INTO {table_name} ({insert_cols}, version, server_id)
|
||||||
|
VALUES ({insert_vals}, (SELECT next_version FROM new_version), ${{len(args)+1}})
|
||||||
ON CONFLICT (id) DO UPDATE SET
|
ON CONFLICT (id) DO UPDATE SET
|
||||||
{update_cols},
|
{update_cols},
|
||||||
version = {table_name}.version + 1,
|
version = (SELECT next_version FROM new_version),
|
||||||
server_id = EXCLUDED.server_id
|
server_id = ${{len(args)+1}}
|
||||||
WHERE {table_name}.version < EXCLUDED.version
|
WHERE {table_name}.version < (SELECT next_version FROM new_version)
|
||||||
OR ({table_name}.version = EXCLUDED.version AND {table_name}.server_id < EXCLUDED.server_id)
|
OR ({table_name}.version = (SELECT next_version FROM new_version) AND {table_name}.server_id < ${{len(args)+1}})
|
||||||
RETURNING id, version
|
RETURNING id, version
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
# Add server_id to args
|
||||||
|
args = list(args)
|
||||||
|
args.append(local_ts_id)
|
||||||
|
|
||||||
result = await conn.fetch(query, *args)
|
result = await conn.fetch(query, *args)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
@ -883,6 +892,7 @@ class APIConfig(BaseModel):
|
||||||
|
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
|
||||||
async def get_table_columns(self, conn, table_name: str) -> List[str]:
|
async def get_table_columns(self, conn, table_name: str) -> List[str]:
|
||||||
query = """
|
query = """
|
||||||
SELECT column_name
|
SELECT column_name
|
||||||
|
|
|
@ -171,13 +171,13 @@ async def store_weather_to_db(date_time: dt_datetime, weather_data: dict):
|
||||||
|
|
||||||
daily_weather_params = [
|
daily_weather_params = [
|
||||||
location_point,
|
location_point,
|
||||||
day_data.get('sunrise'), day_data.get('sunriseEpoch'),
|
day_data['sunrise'], day_data.get('sunriseEpoch'),
|
||||||
day_data.get('sunset'), day_data.get('sunsetEpoch'),
|
day_data['sunset'], day_data.get('sunsetEpoch'),
|
||||||
day_data.get('description'), day_data.get('tempmax'),
|
day_data.get('description'), day_data.get('tempmax'),
|
||||||
day_data.get('tempmin'), day_data.get('uvindex'),
|
day_data.get('tempmin'), day_data.get('uvindex'),
|
||||||
day_data.get('winddir'), day_data.get('windspeed'),
|
day_data.get('winddir'), day_data.get('windspeed'),
|
||||||
day_data.get('icon'), dt_datetime.now(tz),
|
day_data.get('icon'), dt_datetime.now(tz),
|
||||||
day_data.get('datetime'), day_data.get('datetimeEpoch'),
|
day_data['datetime'], day_data.get('datetimeEpoch'),
|
||||||
day_data.get('temp'), day_data.get('feelslikemax'),
|
day_data.get('temp'), day_data.get('feelslikemax'),
|
||||||
day_data.get('feelslikemin'), day_data.get('feelslike'),
|
day_data.get('feelslikemin'), day_data.get('feelslike'),
|
||||||
day_data.get('dew'), day_data.get('humidity'),
|
day_data.get('dew'), day_data.get('humidity'),
|
||||||
|
@ -188,8 +188,7 @@ async def store_weather_to_db(date_time: dt_datetime, weather_data: dict):
|
||||||
day_data.get('cloudcover'), day_data.get('visibility'),
|
day_data.get('cloudcover'), day_data.get('visibility'),
|
||||||
day_data.get('solarradiation'), day_data.get('solarenergy'),
|
day_data.get('solarradiation'), day_data.get('solarenergy'),
|
||||||
day_data.get('severerisk', 0), day_data.get('moonphase'),
|
day_data.get('severerisk', 0), day_data.get('moonphase'),
|
||||||
day_data.get('conditions'), stations_array, day_data.get('source'),
|
day_data.get('conditions'), stations_array, day_data.get('source')
|
||||||
os.environ.get('TS_ID') # server_id
|
|
||||||
]
|
]
|
||||||
|
|
||||||
debug(f"Prepared daily_weather_params: {daily_weather_params}")
|
debug(f"Prepared daily_weather_params: {daily_weather_params}")
|
||||||
|
@ -236,8 +235,7 @@ async def store_weather_to_db(date_time: dt_datetime, weather_data: dict):
|
||||||
hour_data['conditions'],
|
hour_data['conditions'],
|
||||||
hour_data['icon'],
|
hour_data['icon'],
|
||||||
hour_stations_array,
|
hour_stations_array,
|
||||||
hour_data.get('source', ''),
|
hour_data.get('source', '')
|
||||||
os.environ.get('TS_ID') # server_id
|
|
||||||
]
|
]
|
||||||
|
|
||||||
hourly_weather_query = 'INSERT INTO hourlyweather DEFAULT VALUES'
|
hourly_weather_query = 'INSERT INTO hourlyweather DEFAULT VALUES'
|
||||||
|
@ -258,6 +256,7 @@ async def store_weather_to_db(date_time: dt_datetime, weather_data: dict):
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def get_weather_from_db(date_time: dt_datetime, latitude: float, longitude: float):
|
async def get_weather_from_db(date_time: dt_datetime, latitude: float, longitude: float):
|
||||||
debug(f"Using {date_time.strftime('%Y-%m-%d %H:%M:%S')} as our datetime in get_weather_from_db.")
|
debug(f"Using {date_time.strftime('%Y-%m-%d %H:%M:%S')} as our datetime in get_weather_from_db.")
|
||||||
query_date = date_time.date()
|
query_date = date_time.date()
|
||||||
|
|
Loading…
Reference in a new issue