From 40372d835dfcb2c745994ebc5bd89f9d3fb58438 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Fri, 25 Sep 2020 10:14:22 +0200
Subject: [PATCH] externalized device routes

---
 src/StorageLeaf.py        |  4 +++-
 src/blueprints/Devices.py | 39 +++++++++++++++++++++++++++++++++++++++
 src/blueprints/Routes.py  | 19 -------------------
 3 files changed, 42 insertions(+), 20 deletions(-)
 create mode 100644 src/blueprints/Devices.py

diff --git a/src/StorageLeaf.py b/src/StorageLeaf.py
index 5df9835..37a78cc 100644
--- a/src/StorageLeaf.py
+++ b/src/StorageLeaf.py
@@ -3,7 +3,7 @@ import os
 from TheCodeLabs_BaseUtils.DefaultLogger import DefaultLogger
 from TheCodeLabs_FlaskUtils.FlaskBaseApp import FlaskBaseApp
 
-from blueprints import Routes
+from blueprints import Routes, Devices
 from logic import Constants
 
 LOGGER = DefaultLogger().create_logger_if_not_exists(Constants.APP_NAME)
@@ -15,6 +15,8 @@ class StorageLeaf(FlaskBaseApp):
 
     def _register_blueprints(self, app):
         app.register_blueprint(Routes.construct_blueprint(self._settings, self._version))
+        app.register_blueprint(Devices.construct_blueprint(self._settings))
+
         return app
 
 
diff --git a/src/blueprints/Devices.py b/src/blueprints/Devices.py
new file mode 100644
index 0000000..be7abb9
--- /dev/null
+++ b/src/blueprints/Devices.py
@@ -0,0 +1,39 @@
+from enum import Enum
+
+from flask import Blueprint, jsonify
+
+from logic.Database import Database
+
+
+class DeviceParameters(Enum):
+    DEVICE = 'device'
+    SENSORS = 'sensors'
+
+    @staticmethod
+    def get_values():
+        return [m.value for m in DeviceParameters]
+
+
+def construct_blueprint(settings):
+    devices = Blueprint('devices', __name__)
+
+    @devices.route('/devices', methods=['GET'])
+    def get_all_devices():
+        database = Database(settings['database']['databasePath'])
+        return jsonify(database.deviceAccess.get_all_devices())
+
+    @devices.route('/device/<int:deviceID>', methods=['GET'])
+    def get_device(deviceID):
+        database = Database(settings['database']['databasePath'])
+        return jsonify(database.deviceAccess.get_device(deviceID))
+
+    @devices.route('/device/<int:deviceID>/sensors/', methods=['GET'])
+    def get_all_sensors_for_device(deviceID):
+        database = Database(settings['database']['databasePath'])
+        device = database.deviceAccess.get_device(deviceID)
+        if not device:
+            return jsonify({'success': False, 'msg': f'No device with id "{deviceID}" existing'})
+
+        return jsonify(database.sensorAccess.get_all_sensors_for_device(deviceID))
+
+    return devices
diff --git a/src/blueprints/Routes.py b/src/blueprints/Routes.py
index bec5af4..1b31c78 100644
--- a/src/blueprints/Routes.py
+++ b/src/blueprints/Routes.py
@@ -48,16 +48,6 @@ def construct_blueprint(settings, version):
                                appName=Constants.APP_NAME,
                                openApiSpecification=specification)
 
-    @routes.route('/devices', methods=['GET'])
-    def get_all_devices():
-        database = Database(settings['database']['databasePath'])
-        return jsonify(database.deviceAccess.get_all_devices())
-
-    @routes.route('/device/<int:deviceID>', methods=['GET'])
-    def get_device(deviceID):
-        database = Database(settings['database']['databasePath'])
-        return jsonify(database.deviceAccess.get_device(deviceID))
-
     @routes.route('/sensors', methods=['GET'])
     def get_all_sensors():
         database = Database(settings['database']['databasePath'])
@@ -68,15 +58,6 @@ def construct_blueprint(settings, version):
         database = Database(settings['database']['databasePath'])
         return jsonify(database.sensorAccess.get_sensor(sensorID))
 
-    @routes.route('/device/<int:deviceID>/sensors/', methods=['GET'])
-    def get_all_sensors_for_device(deviceID):
-        database = Database(settings['database']['databasePath'])
-        device = database.deviceAccess.get_device(deviceID)
-        if not device:
-            return jsonify({'success': False, 'msg': f'No device with id "{deviceID}" existing'})
-
-        return jsonify(database.sensorAccess.get_all_sensors_for_device(deviceID))
-
     @routes.route('/measurements', methods=['GET'])
     def get_all_measurements():
         database = Database(settings['database']['databasePath'])
-- 
GitLab