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

delete route for device

parent 851a6f39
Branches
Tags
No related merge requests found
......@@ -54,6 +54,33 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/Device'
delete:
tags:
- device
summary: Deletes a specific device. All correspondig sensors and measurements will be deleted too.
operationId: deleteDevice
security:
- bearerAuth: []
parameters:
- in: path
name: deviceID
description: The device 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'
/device/{deviceID}/sensors:
get:
tags:
......
from flask import Blueprint, jsonify
from logic.AuthenticationWrapper import require_api_key
from logic.database.Database import Database
......@@ -25,4 +26,20 @@ def construct_blueprint(settings):
return jsonify(database.sensorAccess.get_all_sensors_for_device(deviceID))
@devices.route('/device/<int:deviceID>', methods=['DELETE'])
@require_api_key(password=settings['api']['key'])
def delete_device(deviceID):
database = Database(settings['database']['databasePath'])
if not database.deviceAccess.get_device(deviceID):
return jsonify({'success': False, 'msg': f'No device with id "{deviceID}" existing'})
sensors = database.sensorAccess.get_all_sensors_for_device(deviceID)
for sensor in sensors:
database.measurementAccess.delete_measurements_for_sensor(sensor['id'])
database.sensorAccess.delete_sensor(sensor['id'])
database.deviceAccess.delete_device(deviceID)
return jsonify({'success': True})
return devices
......@@ -28,3 +28,7 @@ class DeviceAccess(DatabaseAccess):
def add_device(self, deviceName: str):
LOGGER.debug(f'Inserting new device "{deviceName}"')
self._query(f'INSERT INTO {self.TABLE_NAME}(name) VALUES(?)', deviceName, fetch_type=FetchType.NONE)
def delete_device(self, deviceID: int):
LOGGER.debug(f'Deleting device "{deviceID}"')
self._query(f'DELETE FROM {self.TABLE_NAME} WHERE id = ?', deviceID, fetch_type=FetchType.NONE)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment