From e7c015a89ff8eed4acd99d7b383c1c3843930fec Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 23 Sep 2020 19:42:46 +0200 Subject: [PATCH] added api route to get all sensors for a device --- docs/api.yml | 24 ++++++++++++++++++++++-- src/blueprints/Routes.py | 9 +++++++++ src/logic/Database.py | 5 +++++ 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/docs/api.yml b/docs/api.yml index 0bc3a2a..1d20809 100644 --- a/docs/api.yml +++ b/docs/api.yml @@ -50,10 +50,30 @@ paths: application/json: schema: $ref: '#/components/schemas/Device' + /device/{deviceName}/sensors: + get: + summary: Gets all sensors for a specific device + operationId: deviceSensors + parameters: + - in: path + name: deviceName + description: The device name + required: true + schema: + type: string + responses: + '200': + description: All available sensors + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Sensor' /device/{deviceName}/sensors/{sensorName}: get: - summary: Gets a specific device - operationId: device + summary: Gets a specific sensor for a device + operationId: deviceSensor parameters: - in: path name: deviceName diff --git a/src/blueprints/Routes.py b/src/blueprints/Routes.py index 3ae54e1..fe5f613 100644 --- a/src/blueprints/Routes.py +++ b/src/blueprints/Routes.py @@ -60,6 +60,15 @@ def construct_blueprint(settings, version): database = Database(settings['database']['databasePath']) return jsonify(database.get_all_sensors()) + @routes.route('/device/<deviceName>/sensors/', methods=['GET']) + def get_all_sensors_for_device(deviceName): + database = Database(settings['database']['databasePath']) + device = database.get_device(deviceName) + if not device: + return jsonify({'success': False, 'msg': f'No device with name "{deviceName}" existing'}) + + return jsonify(database.get_all_sensors_for_device(device)) + @routes.route('/device/<deviceName>/sensors/<sensorName>', methods=['GET']) def get_sensor(deviceName, sensorName): database = Database(settings['database']['databasePath']) diff --git a/src/logic/Database.py b/src/logic/Database.py index cdf0843..59ac3f3 100644 --- a/src/logic/Database.py +++ b/src/logic/Database.py @@ -82,6 +82,11 @@ class Database: def get_all_sensors(self): return self.__query(f'SELECT * FROM {self.TABLE_SENSOR} ORDER BY device_id, name', fetch_type=FetchType.ALL) + def get_all_sensors_for_device(self, device: Dict[str, str]): + return self.__query(f'SELECT * FROM {self.TABLE_SENSOR} WHERE device_id = ? ORDER BY name', + device['id'], + fetch_type=FetchType.ALL) + def get_sensor(self, deviceID: int, name: str): return self.__query(f'SELECT * FROM {self.TABLE_SENSOR} WHERE device_id = ? AND name = ?', deviceID, name, -- GitLab