implement recent data endpoint

This commit is contained in:
Michi 2025-04-09 10:34:30 +02:00
parent 49b01c269a
commit 2c1a95c1a5
3 changed files with 54 additions and 7 deletions

View file

@ -2,7 +2,8 @@ import os
from sqlmodel import create_engine, Session
from dotenv import load_dotenv
from models import User, SensorData, Client, Session as SessionModel
from datetime import datetime
from datetime import datetime, timedelta
from typing import List, Optional
# Lade Umgebungsvariablen
@ -12,6 +13,13 @@ DB_CONNECTION_STRING = os.getenv("DB_CONNECTION_STRING", "postgresql://user:pass
# SQLAlchemy Setup
engine = create_engine(DB_CONNECTION_STRING, echo=True)
def get_db():
db = Session(bind=engine)
try:
yield db
finally:
db.close()
# Funktion zum Speichern von Sensordaten
def save_sensor_data(db: Session, sensor_data: SensorData):
db.add(sensor_data) # Das Pydantic-Modell kann direkt hinzugefügt werden
@ -56,4 +64,11 @@ def save_token_to_db(db: Session, token: str, user_id: int, valid_until: datetim
new_session = SessionModel(token=token, validuntil=valid_until, userid=user_id)
db.add(new_session)
db.commit()
db.refresh(new_session)
db.refresh(new_session)
def get_recent_sensor_data(db: Session, client_id: int, start_date: datetime, end_date: datetime) -> List[SensorData]:
return db.query(SensorData).filter(
SensorData.timestamp >= start_date,
SensorData.timestamp < end_date, # Das end_date sollte exklusiv sein
SensorData.clientid == client_id
).all()