backend-development-course/app/__init__.py

153 lines
3.1 KiB
Python

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/<user_id>", 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/<user_id>", 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/<record_id>", 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/<record_id>", 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