From 3390b2e3748428951dd46c1b671e84bf0f779e69 Mon Sep 17 00:00:00 2001 From: hasslesstech Date: Mon, 28 Oct 2024 17:19:47 +0200 Subject: [PATCH] add user-related endpoints --- app/__init__.py | 40 +++++++++++++++++++++++++++++++++++++++- app/local_db.py | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100644 app/local_db.py diff --git a/app/__init__.py b/app/__init__.py index 433eabb..9f34e3f 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -1,7 +1,9 @@ -from flask import Flask +from flask import Flask, request import time +from app.local_db import LocalDB app = Flask(__name__) +ldb = LocalDB() @app.route("/healthcheck") def ep_healthcheck(): @@ -9,3 +11,39 @@ def ep_healthcheck(): "date": time.strftime('%Y.%m.%d %H:%M:%S'), "status": "OK" } + +@app.route("/users", methods = ["GET"]) +def ep_users_get(): + return ldb.get_users() + +@app.route("/user/", methods = ["GET"]) +def ep_user_get(user_id): + user = ldb.get_user(user_id) + + if 'uuid' in user: + return user + else: + return user, 404 + +@app.route("/user", methods = ["POST"]) +def ep_user_post(): + body = request.json + + if 'name' in body: + r = ldb.add_user(body['name']) + + if 'uuid' in r: + return r + else: + return r, 403 + else: + return {}, 403 + +@app.route("/user/", methods = ["DELETE"]) +def ep_user_delete(user_id): + r = ldb.del_user(user_id) + + if 'uuid' in r: + return r + else: + return r, 403 diff --git a/app/local_db.py b/app/local_db.py new file mode 100644 index 0000000..02b6206 --- /dev/null +++ b/app/local_db.py @@ -0,0 +1,44 @@ +import uuid + +class LocalDB: + def __init__(self): + self.users = {} + self.categories = {} + self.records = {} + + def get_users(self): + return self.users + + def get_user(self, uid): + if uid in self.users: + return { + 'uuid': uid, + 'name': self.users[uid] + } + else: + return {} + + def add_user(self, name): + if not name: + return {} + + if name in set(self.users.values()): + return {} + + new_uuid = uuid.uuid4().hex + self.users[new_uuid] = name + return { + 'uuid': new_uuid, + 'name': name + } + + def del_user(self, uid): + if uid in self.users: + name = self.users[uid] + del self.users[uid] + return { + 'uuid': uid, + 'name': name + } + else: + return {}