Skip to content

Commit

Permalink
Merge pull request #76 from luftdaten-at/revert-75-74-add-seperate-me…
Browse files Browse the repository at this point in the history
…asurements-table-for-calibration-data

Revert "74 add seperate measurements table for calibration data"
  • Loading branch information
n11ik authored Feb 24, 2025
2 parents 72125d5 + c64e59d commit 985a53b
Show file tree
Hide file tree
Showing 6 changed files with 11 additions and 150 deletions.

This file was deleted.

30 changes: 0 additions & 30 deletions code/alembic/versions/e2dda8ce7cd2_fixed_name.py

This file was deleted.

This file was deleted.

20 changes: 0 additions & 20 deletions code/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,6 @@ class Location(Base):
country = relationship("Country")
stations = relationship("Station", back_populates="location")
measurements = relationship("Measurement", back_populates="location")
calibration_measurements = relationship("CalibrationMeasurement", back_populates="location")


class Station(Base):
Expand All @@ -75,7 +74,6 @@ class Station(Base):
location_id = Column(Integer, ForeignKey('locations.id'))
location = relationship("Location", back_populates="stations")
measurements = relationship("Measurement", back_populates="station")
calibration_measurements = relationship("CalibrationMeasurement", back_populates="station")
hourly_avg = relationship("HourlyDimensionAverages", back_populates="station")
stationStatus = relationship("StationStatus", back_populates="station")

Expand All @@ -95,21 +93,6 @@ class Measurement(Base):
values = relationship("Values", back_populates="measurement")


class CalibrationMeasurement(Base):
__tablename__ = "calibration_measurements"

id = Column(Integer, primary_key=True, index=True)
time_received = Column(DateTime)
time_measured = Column(DateTime)
sensor_model = Column(Integer)
# Relationships:
location_id = Column(Integer, ForeignKey('locations.id'))
location = relationship("Location", back_populates="calibration_measurements")
station_id = Column(Integer, ForeignKey('stations.id'))
station = relationship("Station", back_populates="calibration_measurements")
values = relationship("Values", back_populates="calibration_measurement")


class Values(Base):
__tablename__ = "values"

Expand All @@ -120,9 +103,6 @@ class Values(Base):
measurement_id = Column(Integer, ForeignKey('measurements.id'))
measurement = relationship("Measurement", back_populates="values")

calibration_measurement_id = Column(Integer, ForeignKey('calibration_measurements.id'))
calibration_measurement = relationship("CalibrationMeasurement", back_populates="values")


class StationStatus(Base):
__tablename__ = "stationStatus"
Expand Down
36 changes: 11 additions & 25 deletions code/routers/station.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from enum import Enum
from itertools import groupby

from models import Station, Location, Measurement, CalibrationMeasurement, Values, StationStatus, HourlyDimensionAverages, City
from models import Station, Location, Measurement, Values, StationStatus, HourlyDimensionAverages, City
from schemas import StationDataCreate, SensorsCreate, StationStatusCreate
from utils import get_or_create_location, download_csv, get_or_create_station, standard_output_to_csv, standard_output_to_json
from enums import Precision, OutputFormat, Order, Dimension
Expand Down Expand Up @@ -232,11 +232,6 @@ async def create_station_data(
db: Session = Depends(get_db)
):

MeasurementClass = Measurement

if station.calibration_mode:
MeasurementClass = CalibrationMeasurement

db_station = get_or_create_station(
db = db,
station = station
Expand All @@ -248,10 +243,10 @@ async def create_station_data(
# Durch alle Sensoren iterieren
for sensor_id, sensor_data in sensors.root.items():
# Prüfen, ob bereits eine Messung mit dem gleichen time_measured und sensor_model existiert
existing_measurement = db.query(MeasurementClass).filter(
MeasurementClass.station_id == db_station.id,
MeasurementClass.time_measured == station.time,
MeasurementClass.sensor_model == sensor_data.type
existing_measurement = db.query(Measurement).filter(
Measurement.station_id == db_station.id,
Measurement.time_measured == station.time,
Measurement.sensor_model == sensor_data.type
).first()

if existing_measurement:
Expand All @@ -261,7 +256,7 @@ async def create_station_data(
)

# Wenn keine bestehende Messung gefunden wurde, füge eine neue hinzu
db_measurement = MeasurementClass(
db_measurement = Measurement(
sensor_model=sensor_data.type,
station_id=db_station.id,
time_measured=station.time,
Expand All @@ -274,20 +269,11 @@ async def create_station_data(

# Werte (dimension, value) für die Messung hinzufügen
for dimension, value in sensor_data.data.items():
db_value = None
if station.calibration_mode:
db_value = Values(
dimension=dimension,
value=value,
calibration_measurement_id=db_measurement.id
)
else:
db_value = Values(
dimension=dimension,
value=value,
measurement_id=db_measurement.id
)

db_value = Values(
dimension=dimension,
value=value,
measurement_id=db_measurement.id
)
db.add(db_value)

db_station.last_active = station.time
Expand Down
1 change: 0 additions & 1 deletion code/schemas.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ class StationDataCreate(BaseModel):
apikey: str
location: LocationCreate
source: Optional[int] = 1
calibration_mode: bool


class SensorDataCreate(BaseModel):
Expand Down

0 comments on commit 985a53b

Please sign in to comment.