Skip to content
Snippets Groups Projects
Commit e7e15dd4 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

added route to retrieve measurements of a specific sensor in a given time range

parent fefc3bdf
No related branches found
No related tags found
No related merge requests found
...@@ -74,6 +74,15 @@ def get_measurements(db: Session, startDateTime: str, endDateTime: str): ...@@ -74,6 +74,15 @@ def get_measurements(db: Session, startDateTime: str, endDateTime: str):
return db.query(Models.Measurement).all() return db.query(Models.Measurement).all()
def get_measurements_for_sensor(db: Session, startDateTime: str, endDateTime: str, sensorId: int):
if startDateTime and endDateTime:
return db.query(Models.Measurement).filter(and_(startDateTime <= Models.Measurement.timestamp,
endDateTime >= Models.Measurement.timestamp,
Models.Measurement.sensorId == sensorId)).all()
return db.query(Models.Measurement).filter(Models.Measurement.sensorId == sensorId).all()
def get_measurement(db: Session, measurementId: int): def get_measurement(db: Session, measurementId: int):
return db.query(Models.Measurement).filter(Models.Measurement.id == measurementId).first() return db.query(Models.Measurement).filter(Models.Measurement.id == measurementId).first()
......
...@@ -3,7 +3,7 @@ from typing import List ...@@ -3,7 +3,7 @@ from typing import List
from fastapi import APIRouter, HTTPException, Depends from fastapi import APIRouter, HTTPException, Depends
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from Dependencies import get_database, check_api_key from Dependencies import get_database, check_api_key, START_DATE_TIME, END_DATE_TIME
from logic.databaseNew import Schemas, Crud from logic.databaseNew import Schemas, Crud
from logic.databaseNew.Schemas import Status from logic.databaseNew.Schemas import Status
...@@ -61,3 +61,17 @@ async def delete_sensor(sensorId: int, db: Session = Depends(get_database)): ...@@ -61,3 +61,17 @@ async def delete_sensor(sensorId: int, db: Session = Depends(get_database)):
Crud.delete_sensor(db, sensor) Crud.delete_sensor(db, sensor)
return Status(message=f'Deleted sensor {sensor.id}') return Status(message=f'Deleted sensor {sensor.id}')
@router.get('/{sensorId}/measurements', response_model=List[Schemas.Measurement],
summary='Gets all measurements for a specific sensor',
description='Number of results can be limited by specifying a date range',
responses={404: {'description': 'Sensor not found'}})
async def get_sensor_measurements(sensorId: int,
startDateTime: str = START_DATE_TIME,
endDateTime: str = END_DATE_TIME,
db: Session = Depends(get_database)):
sensor = Crud.get_sensor(db, sensorId=sensorId)
if sensor is None:
raise HTTPException(status_code=404, detail='Sensor not found')
return Crud.get_measurements_for_sensor(db, startDateTime, endDateTime, sensorId)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment