From a6d1b38932ee454dc3aa41cbf91eb25d3c68364b Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sat, 30 Jan 2021 17:10:10 +0100 Subject: [PATCH] Add measurement update route --- src/logic/database/Crud.py | 9 +++++++++ src/logic/database/Schemas.py | 4 ++++ src/logic/routers/MeasurementRouter.py | 12 ++++++++++++ src/logic/routers/SensorRouter.py | 2 +- src/version.json | 6 +++--- 5 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/logic/database/Crud.py b/src/logic/database/Crud.py index 5fe6860..332d9c7 100644 --- a/src/logic/database/Crud.py +++ b/src/logic/database/Crud.py @@ -150,6 +150,15 @@ def create_measurement(db: Session, measurement: Schemas.MeasurementCreate) -> M return dbMeasurement +@notify_backup_service(BACKUP_SERVICE) +def update_measurement(db: Session, measurementId: int, measurement: Schemas.MeasurementUpdate) -> Models.Measurement: + existingMeasurement = get_measurement(db, measurementId) + existingMeasurement.value = measurement.value + db.commit() + db.refresh(existingMeasurement) + return existingMeasurement + + @notify_backup_service(BACKUP_SERVICE) def delete_measurement(db: Session, measurement: Schemas.Measurement): db.delete(measurement) diff --git a/src/logic/database/Schemas.py b/src/logic/database/Schemas.py index 44be90a..fa5e9fc 100644 --- a/src/logic/database/Schemas.py +++ b/src/logic/database/Schemas.py @@ -45,6 +45,10 @@ class MeasurementCreate(BaseModel): sensor_id: int +class MeasurementUpdate(BaseModel): + value: str = Field(..., min_length=1) + + # ===== sensor ===== class SensorBase(BaseModel): id: int diff --git a/src/logic/routers/MeasurementRouter.py b/src/logic/routers/MeasurementRouter.py index af10479..b9b8d0b 100644 --- a/src/logic/routers/MeasurementRouter.py +++ b/src/logic/routers/MeasurementRouter.py @@ -41,6 +41,18 @@ async def create_measurement(measurement: Schemas.MeasurementCreate, db: Session return Crud.create_measurement(db=db, measurement=measurement) +@router.put('/measurement/{measurementId}', response_model=Schemas.Measurement, + summary='Update a specific measurement', + responses={404: {'description': 'Measurement not found'}}, + dependencies=[Depends(check_api_key)]) +async def update_measurement(measurementId: int, measurement: Schemas.MeasurementUpdate, db: Session = Depends(get_database)): + existingMeasurement = Crud.get_measurement(db, measurementId) + if existingMeasurement is None: + raise HTTPException(status_code=404, detail='Measurement not found') + + return Crud.update_measurement(db, measurementId=measurementId, measurement=measurement) + + @router.delete('/measurement/{measurementId}', response_model=Status, summary='Deletes a specific measurementId', responses={404: {'description': 'Measurement not found'}}, diff --git a/src/logic/routers/SensorRouter.py b/src/logic/routers/SensorRouter.py index 03fd2d3..7e9fdb4 100644 --- a/src/logic/routers/SensorRouter.py +++ b/src/logic/routers/SensorRouter.py @@ -53,7 +53,7 @@ async def create_sensor(sensor: Schemas.SensorCreate, db: Session = Depends(get_ summary='Updates a sensor', responses={404: {'description': 'Sensor not found'}}, dependencies=[Depends(check_api_key)]) -async def update_device(sensorId: int, sensor: Schemas.SensorUpdate, db: Session = Depends(get_database)): +async def update_sensor(sensorId: int, sensor: Schemas.SensorUpdate, db: Session = Depends(get_database)): sensorToUpdate = Crud.get_sensor(db, sensorId) if not sensorToUpdate: raise HTTPException(status_code=404, detail='Sensor not found') diff --git a/src/version.json b/src/version.json index 16a01eb..4eca379 100644 --- a/src/version.json +++ b/src/version.json @@ -1,7 +1,7 @@ { "version": { - "name": "v2.0.4", - "code": 12, - "date": "17.01.21" + "name": "v2.0.5", + "code": 13, + "date": "30.01.21" } } \ No newline at end of file -- GitLab