diff --git a/app.py b/app.py index 8aaa9fb..4b9c4df 100644 --- a/app.py +++ b/app.py @@ -7,8 +7,10 @@ import logging import sqlite3 import sys +import db + app = Flask(__name__) -app.config['JWT_SECRET_KEY'] = 'secret' # TODO change and load from a secrets store +app.config['JWT_SECRET_KEY'] = 'secret' # TODO change and load from a secrets store (should be over 32 bytes long) app.config['JWT_ACCESS_TOKEN_EXPIRES'] = timedelta(hours=1) app.config['JWT_REFRESH_TOKEN_EXPIRES'] = timedelta(days=30) flask_bcrypt = Bcrypt(app) @@ -60,3 +62,8 @@ def verify_token(): def refresh_token(): return make_response(jsonify({"access_token": create_access_token(identity=get_jwt_identity())}), 200) + +@app.route("/devices", methods=["GET"]) +@jwt_required() +def get_all_devices(): + return make_response(jsonify([d.to_dict() for d in db.get_all_devices(cur)]), 200) diff --git a/db.py b/db.py new file mode 100644 index 0000000..a48acf7 --- /dev/null +++ b/db.py @@ -0,0 +1,12 @@ +from dto import Device + + +def get_all_devices(cur) -> list[Device]: + res = cur.execute("SELECT access_key, type, name FROM devices") + devices_from_db = res.fetchall() + + devices = [] + for item in devices_from_db: + devices.append(Device.convert(item)) + return devices + diff --git a/dto.py b/dto.py new file mode 100644 index 0000000..2ed4a19 --- /dev/null +++ b/dto.py @@ -0,0 +1,17 @@ +class Device: + def __init__(self, access_key, device_type, name): + self.access_key = access_key + self.device_type = device_type + self.name = name + + + def to_dict(self): + return { + 'access_key': self.access_key, + 'type': self.device_type, + 'name': self.name + } + + def convert(device_from_db) -> Device: + return Device(*device_from_db) +