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