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

Fixed #7 - route to retrieve latest value for a sensor

parent 8eae37e7
Branches
Tags
No related merge requests found
...@@ -122,6 +122,26 @@ paths: ...@@ -122,6 +122,26 @@ paths:
type: array type: array
items: items:
$ref: '#/components/schemas/Measurement' $ref: '#/components/schemas/Measurement'
/sensor/{sensorID}/measurements/latest:
get:
summary: Gets the latest measurement for a specific sensor
operationId: sensorMeasurementsLatest
parameters:
- in: path
name: sensorID
description: The sensor id
required: true
schema:
type: integer
responses:
'200':
description: The latest measurement
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Measurement'
/measurements: /measurements:
get: get:
......
...@@ -96,6 +96,15 @@ def construct_blueprint(settings, version): ...@@ -96,6 +96,15 @@ def construct_blueprint(settings, version):
return jsonify(database.get_all_measurements_for_sensor(sensorID)) return jsonify(database.get_all_measurements_for_sensor(sensorID))
@routes.route('/sensor/<sensorID>/measurements/latest', methods=['GET'])
def get_latest_measurements_for_sensor(sensorID):
database = Database(settings['database']['databasePath'])
sensor = database.get_sensor(sensorID)
if not sensor:
return jsonify({'success': False, 'msg': f'No sensor with id "{sensorID}" existing'})
return jsonify(database.get_latest_measurements_for_sensor(sensorID))
@routes.route('/measurements', methods=['POST']) @routes.route('/measurements', methods=['POST'])
@require_api_key(password=settings['api']['key']) @require_api_key(password=settings['api']['key'])
def addMeasurement(): def addMeasurement():
......
...@@ -125,6 +125,12 @@ class Database: ...@@ -125,6 +125,12 @@ class Database:
sensorID, sensorID,
fetch_type=FetchType.ALL) fetch_type=FetchType.ALL)
def get_latest_measurements_for_sensor(self, sensorID: int) -> Dict[str, str] or None:
return self.__query(f'SELECT * FROM {self.TABLE_MEASUREMENT} WHERE sensor_id = ? '
f'ORDER BY datetime(timestamp) DESC LIMIT 1',
sensorID,
fetch_type=FetchType.ONE)
def add_measurement(self, sensorID: int, value: str): def add_measurement(self, sensorID: int, value: str):
sensor = self.get_sensor(sensorID) sensor = self.get_sensor(sensorID)
LOGGER.debug(f'Inserting new measurement for sensor "{sensor["name"]}" ' LOGGER.debug(f'Inserting new measurement for sensor "{sensor["name"]}" '
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment