Fix optional-discharge crashes and dedupe measurement mapping

- MeasurementResponse.discharge is now Optional[float]; measurements with a
  null discharge no longer raise a Pydantic ValidationError (HTTP 500) on the
  /measurements/latest and /measurements/station endpoints.
- InfluxDB save_measurements guards float(discharge) against None instead of
  crashing with TypeError.
- Extract the duplicated measurement->response mapping into a single
  _to_measurement_response helper used by both measurement endpoints.
This commit is contained in:
2026-07-22 12:34:46 +07:00
parent f4c63cabef
commit 6e78225d00
2 changed files with 25 additions and 35 deletions
+4 -2
View File
@@ -111,9 +111,11 @@ class InfluxDBAdapter(DatabaseAdapter):
"time": measurement["timestamp"].isoformat(),
"fields": {
"water_level": float(measurement["water_level"]),
"discharge": float(measurement["discharge"]),
"discharge": float(measurement["discharge"])
if measurement.get("discharge") is not None
else None,
"discharge_percent": float(measurement["discharge_percent"])
if measurement["discharge_percent"]
if measurement.get("discharge_percent")
else None,
},
}