diff --git a/docs/api.yml b/docs/api.yml index 38b48548935b1da0e44d3a51a8571e0aaa44cef4..4d8a12f78a294f00a1c1d4019c49ed737a2a3efd 100644 --- a/docs/api.yml +++ b/docs/api.yml @@ -219,6 +219,33 @@ paths: application/json: schema: $ref: '#/components/schemas/Measurement' + delete: + tags: + - measurement + summary: Deletes a specific measurement + operationId: deleteMeasurement + security: + - bearerAuth: [] + parameters: + - in: path + name: measurementID + description: The measurement id + required: true + schema: + type: integer + responses: + '200': + description: success response + content: + application/json: + schema: + $ref: '#/components/schemas/SuccessResponse' + default: + description: error response + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorResponse' components: securitySchemes: diff --git a/src/blueprints/Measurements.py b/src/blueprints/Measurements.py index 932d9fa2da6357e546128774d6a4d6b8e551d5c1..536b8eef06d27ad068fc845a045ed6be2cd7ca0c 100644 --- a/src/blueprints/Measurements.py +++ b/src/blueprints/Measurements.py @@ -56,4 +56,14 @@ def construct_blueprint(settings): database.sensorAccess.add_sensor(deviceID, sensorName, sensorType) return database.sensorAccess.get_sensor_by_name_and_device_id(deviceID, sensorName) + @measurements.route('/measurement/<int:measurementID>', methods=['DELETE']) + @require_api_key(password=settings['api']['key']) + def delete_measurement(measurementID): + database = Database(settings['database']['databasePath']) + if not database.measurementAccess.get_measurement(measurementID): + return jsonify({'success': False, 'msg': f'No measurement with id "{measurementID}" existing'}) + + database.measurementAccess.delete_measurement(measurementID) + return jsonify({'success': True}) + return measurements diff --git a/src/logic/database/MeasurementAccess.py b/src/logic/database/MeasurementAccess.py index 0ff97c5611860370d30d3ca8434fd713ee2e9e03..e617b0f6262ffe337ba357742c7b4787f738aef4 100644 --- a/src/logic/database/MeasurementAccess.py +++ b/src/logic/database/MeasurementAccess.py @@ -48,3 +48,8 @@ class MeasurementAccess(DatabaseAccess): self._query(f'INSERT INTO {self.TABLE_NAME}(sensor_id, value, timestamp ) VALUES(?, ?, ?)', sensorID, value, self.__get_current_datetime(), fetch_type=FetchType.NONE) + + def delete_measurement(self, measurementID: int): + LOGGER.debug(f'Deleting measurement "{measurementID}"') + self._query(f'DELETE FROM {self.TABLE_NAME} WHERE id = ?', measurementID, fetch_type=FetchType.NONE) +