from flask import Flask, request import time import json from app.local_db import LocalDB app = Flask(__name__) ldb = LocalDB() @app.route("/healthcheck") def ep_healthcheck(): return { "date": time.strftime('%Y.%m.%d %H:%M:%S'), "status": "OK" } @app.route("/reset_users_because_postman_is_dumb_like_that") def ep_reset(): ldb.reset() return {} @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 @app.route("/category", methods = ["GET"]) def ep_category_get(): body = request.json if 'uuid' in body: category = ldb.get_category(body['uuid']) if 'uuid' in category: return category else: return category, 404 else: return {}, 403 @app.route("/category", methods = ["POST"]) def ep_category_post(): body = request.json if 'name' in body: r = ldb.add_category(body['name']) if 'uuid' in r: return r else: return r, 403 else: return {}, 403 @app.route("/category", methods = ["DELETE"]) def ep_category_delete(): body = request.json if 'uuid' in body: category = ldb.del_category(body['uuid']) if 'uuid' in category: return category else: return category, 404 else: return {}, 403 @app.route("/record/", methods = ["GET"]) def ep_record_get(record_id): r = ldb.get_record(record_id) if 'uuid' in r: return r else: return r, 404 @app.route("/record", methods = ["GET"]) def ep_record_get_filtered(): options = {} if 'user_id' in request.json: options['user_id'] = request.json['user_id'] if 'cat_id' in request.json: options['cat_id'] = request.json['cat_id'] if len(list(options.keys())) == 0: return [], 400 r = ldb.filter_records(options) return json.dumps(r) @app.route("/record/", methods = ["DELETE"]) def ep_record_del(record_id): r = ldb.del_record(record_id) if 'uuid' in r: return r else: return r, 404 @app.route("/record", methods = ["POST"]) def ep_record_post(): body = request.json if 'user_id' not in body: return {}, 400 if 'cat_id' not in body: return {}, 400 if 'amount' not in body: return {}, 400 r = ldb.add_record(body['user_id'], body['cat_id'], body['amount']) if 'uuid' in r: return r else: return r, 403