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

allow to specify a date range when fetching all measurements

parent 0e16ae0e
No related branches found
No related tags found
No related merge requests found
from datetime import datetime from datetime import datetime
from sqlalchemy import and_
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from logic.databaseNew import Models, Schemas from logic.databaseNew import Models, Schemas
...@@ -65,8 +66,12 @@ def delete_sensor(db: Session, sensor: Schemas.Sensor): ...@@ -65,8 +66,12 @@ def delete_sensor(db: Session, sensor: Schemas.Sensor):
# ===== measurements ===== # ===== measurements =====
def get_measurements(db: Session, skip: int = 0, limit: int = 100): def get_measurements(db: Session, startDateTime: str, endDateTime: str):
return db.query(Models.Measurement).offset(skip).limit(limit).all() 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): def get_measurement(db: Session, measurementId: int):
......
from typing import List from typing import List
from fastapi import APIRouter, HTTPException, Depends from fastapi import APIRouter, HTTPException, Depends, Query
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
...@@ -14,9 +14,15 @@ router = APIRouter( ...@@ -14,9 +14,15 @@ router = APIRouter(
@router.get('/', response_model=List[Schemas.Measurement], @router.get('/', response_model=List[Schemas.Measurement],
summary='Gets all measurements') summary='Gets all measurements (Number of results can be limited by specifying a date range).')
async def read_measurements(skip: int = 0, limit: int = 100, db: Session = Depends(get_database)): async def read_measurements(startDateTime: str = Query('2020-01-20 18:15:22',
return Crud.get_measurements(db, skip=skip, limit=limit) 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, @router.get('/{measurementId}', response_model=Schemas.Measurement,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment