V 1.5.9 feat: Spalte 'source' (loop/archive/wview) in weather_data
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+18
-3
@@ -164,6 +164,9 @@ class WeatherDataInput(BaseModel):
|
||||
# Vorhersage
|
||||
forecast: Optional[int] = None
|
||||
|
||||
# Datenquelle
|
||||
source: Optional[str] = None
|
||||
|
||||
# ---- Validatoren -----------------------------------------------------
|
||||
|
||||
@field_validator("tempOut", "temperature", "tempIn")
|
||||
@@ -229,6 +232,13 @@ class WeatherDataInput(BaseModel):
|
||||
raise ValueError("rain value out of plausible range")
|
||||
return v
|
||||
|
||||
@field_validator("source")
|
||||
@classmethod
|
||||
def _source_valid(cls, v: Optional[str]) -> Optional[str]:
|
||||
if v is not None and v not in ("loop", "archive"):
|
||||
raise ValueError("source must be 'loop' or 'archive'")
|
||||
return v
|
||||
|
||||
# ---- Konvertierungen -------------------------------------------------
|
||||
|
||||
def get_datetime_string(self) -> str:
|
||||
@@ -330,6 +340,9 @@ def setup_database() -> None:
|
||||
cursor.execute(
|
||||
"ALTER TABLE weather_data ADD COLUMN IF NOT EXISTS bar_trend INTEGER"
|
||||
)
|
||||
cursor.execute(
|
||||
"ALTER TABLE weather_data ADD COLUMN IF NOT EXISTS source VARCHAR"
|
||||
)
|
||||
cursor.execute(
|
||||
"CREATE INDEX IF NOT EXISTS idx_weather_datetime_desc "
|
||||
"ON weather_data (datetime DESC)"
|
||||
@@ -500,6 +513,7 @@ def _store_weather(data: WeatherDataInput) -> dict:
|
||||
data.rain,
|
||||
data.get_rain_rate(),
|
||||
data.forecast,
|
||||
data.source,
|
||||
)
|
||||
|
||||
with pool.connection() as conn:
|
||||
@@ -509,8 +523,8 @@ def _store_weather(data: WeatherDataInput) -> dict:
|
||||
INSERT INTO weather_data
|
||||
(datetime, temperature, temp_in, humidity, humidity_in,
|
||||
pressure, bar_trend, wind_speed, wind_gust, wind_dir,
|
||||
rain, rain_rate, forecast)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
rain, rain_rate, forecast, source)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)
|
||||
ON CONFLICT (datetime) DO UPDATE SET
|
||||
temperature = EXCLUDED.temperature,
|
||||
temp_in = EXCLUDED.temp_in,
|
||||
@@ -523,7 +537,8 @@ def _store_weather(data: WeatherDataInput) -> dict:
|
||||
wind_dir = EXCLUDED.wind_dir,
|
||||
rain = EXCLUDED.rain,
|
||||
rain_rate = EXCLUDED.rain_rate,
|
||||
forecast = EXCLUDED.forecast
|
||||
forecast = EXCLUDED.forecast,
|
||||
source = EXCLUDED.source
|
||||
""",
|
||||
values,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user