diff --git a/src/logic/databaseNew/Crud.py b/src/logic/databaseNew/Crud.py index ae4f2d656f42c515a32127a8ea16b143550caaa6..f2bcd6ae4546382cf7cf761352f4087be96e3afc 100644 --- a/src/logic/databaseNew/Crud.py +++ b/src/logic/databaseNew/Crud.py @@ -1,5 +1,6 @@ from datetime import datetime +from sqlalchemy import and_ from sqlalchemy.orm import Session from logic.databaseNew import Models, Schemas @@ -65,8 +66,12 @@ def delete_sensor(db: Session, sensor: Schemas.Sensor): # ===== measurements ===== -def get_measurements(db: Session, skip: int = 0, limit: int = 100): - return db.query(Models.Measurement).offset(skip).limit(limit).all() +def get_measurements(db: Session, startDateTime: str, endDateTime: str): + if startDateTime and endDateTime: + return db.query(Models.Measurement).filter(and_(startDateTime <= Models.Measurement.timestamp, + endDateTime >= Models.Measurement.timestamp)).all() + + return db.query(Models.Measurement).all() def get_measurement(db: Session, measurementId: int): diff --git a/src/routers/MeasurementRouter.py b/src/routers/MeasurementRouter.py index 6b961510b432e90880c1a95730cf147ee2ab430e..ad83be2413d50c5307d5dd02b8613b79adaabfc3 100644 --- a/src/routers/MeasurementRouter.py +++ b/src/routers/MeasurementRouter.py @@ -1,6 +1,6 @@ from typing import List -from fastapi import APIRouter, HTTPException, Depends +from fastapi import APIRouter, HTTPException, Depends, Query from sqlalchemy.orm import Session from Dependencies import get_database, check_api_key @@ -14,9 +14,15 @@ router = APIRouter( @router.get('/', response_model=List[Schemas.Measurement], - summary='Gets all measurements') -async def read_measurements(skip: int = 0, limit: int = 100, db: Session = Depends(get_database)): - return Crud.get_measurements(db, skip=skip, limit=limit) + summary='Gets all measurements (Number of results can be limited by specifying a date range).') +async def read_measurements(startDateTime: str = Query('2020-01-20 18:15:22', + description='The start date and time of the date range ' + 'that should be taken into account.'), + endDateTime: str = Query('2020-01-20 19:15:22', + description='The end date and time of the date range ' + 'that should be taken into account.'), + db: Session = Depends(get_database)): + return Crud.get_measurements(db, startDateTime=startDateTime, endDateTime=endDateTime) @router.get('/{measurementId}', response_model=Schemas.Measurement,