From 4d93356b5c9c2aef794d704bc9a0e9f4c844d4ed Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Wed, 14 Oct 2020 21:16:32 +0200
Subject: [PATCH] v1.4.1 - updated api.yml and added date range functionality
 to measuremnts by sensor route

---
 docs/api.yml              | 26 ++++++++++++++++++--------
 src/blueprints/Sensors.py | 10 +++++++---
 2 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/docs/api.yml b/docs/api.yml
index 4028e5b..31e18a5 100644
--- a/docs/api.yml
+++ b/docs/api.yml
@@ -196,11 +196,11 @@ paths:
               application/json:
                 schema:
                   $ref: '#/components/schemas/ErrorResponse'
-  /sensor/{sensorID}/measurements/{limit}:
+  /sensor/{sensorID}/measurements:
     get:
       tags:
         - sensor
-      summary: Gets all measurements for a specific sensor (Maximum number of results can be limited with parameter "limit". Set to "0" to disable limit.)
+      summary: Gets all measurements for a specific sensor (Number of results can be limited by specifying a date range).
       operationId: sensorMeasurements
       parameters:
         - in: path
@@ -209,12 +209,22 @@ paths:
           required: true
           schema:
             type: integer
-        - in: path
-          name: limit
-          description: Maximum number of results. Set to "0" to disable limit.
-          required: true
+        - in: query
+          name: startDateTime
+          description: The start date and time of the date range that should be taken into account.
+          required: false
           schema:
-            type: integer
+            type: string
+            format: date-time
+            example: '2020-01-20 18:15:22'
+        - in: query
+          name: endDateTime
+          description: The end date and time of the date range that should be taken into account.
+          required: false
+          schema:
+            type: string
+            format: date-time
+            example: '2020-01-20 19:15:22'
       responses:
         '200':
           description: All available measurements
@@ -279,7 +289,7 @@ paths:
     get:
       tags:
         - measurement
-      summary: Gets all measurements (Number of results can be limited by specifying a date range)
+      summary: Gets all measurements (Number of results can be limited by specifying a date range).
       operationId: measurements
       parameters:
         - in: query
diff --git a/src/blueprints/Sensors.py b/src/blueprints/Sensors.py
index 35294e9..312d89a 100644
--- a/src/blueprints/Sensors.py
+++ b/src/blueprints/Sensors.py
@@ -22,14 +22,18 @@ def construct_blueprint(settings: Dict, backupService: BackupService):
         database = Database(settings['database']['databasePath'], backupService)
         return jsonify(database.sensorAccess.get_sensor(sensorID))
 
-    @sensors.route('/sensor/<int:sensorID>/measurements/<int:limit>', methods=['GET'])
-    def get_all_measurements_for_sensor_with_limit(sensorID: int, limit: int):
+    @sensors.route('/sensor/<int:sensorID>/measurements', methods=['GET'])
+    def get_all_measurements_for_sensor_with_limit(sensorID: int):
         database = Database(settings['database']['databasePath'], backupService)
         sensor = database.sensorAccess.get_sensor(sensorID)
         if not sensor:
             return jsonify({'success': False, 'msg': f'No sensor with id "{sensorID}" existing'})
 
-        return jsonify(database.measurementAccess.get_all_measurements_for_sensor(sensorID, limit))
+        startDateTime = request.args.get('startDateTime')
+        endDateTime = request.args.get('endDateTime')
+
+        database = Database(settings['database']['databasePath'], backupService)
+        return jsonify(database.measurementAccess.get_all_measurements_for_sensor(sensorID, startDateTime, endDateTime))
 
     @sensors.route('/sensor/<int:sensorID>/measurements/latest', methods=['GET'])
     def get_latest_measurements_for_sensor(sensorID: int):
-- 
GitLab