diff --git a/src/logic/database/Crud.py b/src/logic/database/Crud.py index 5fe6860d4a1e9255fb32f734d2d8fbad4518c862..332d9c777009e6bd9df2d0319027ce94aa6521bc 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 44be90aac7a45b81e1c9fee11789d63d0f5f6bcc..fa5e9fc9cb4ca03f5bdabce5a1f221b520f967cb 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 af10479c4b700bff6e4b98debc1ef277fb28ab18..b9b8d0b429c2ab544181f085042902ea47773902 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 03fd2d3d05d75911378de27cd703cf7ddb1f5fd3..7e9fdb444d4a9115ce5380e02c48be069655850e 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 16a01eb6225fd9815ac279eb8d49a87acc57e3e3..4eca379097531ee28645639408c19a32573afa92 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