migrate user, category and record API to db
This commit is contained in:
parent
b96ba3eb34
commit
32fd20b3ae
153
app/__init__.py
153
app/__init__.py
|
@ -66,6 +66,8 @@ def ep_healthcheck():
|
||||||
|
|
||||||
@app.route("/reset_users_because_postman_is_dumb_like_that")
|
@app.route("/reset_users_because_postman_is_dumb_like_that")
|
||||||
def ep_reset():
|
def ep_reset():
|
||||||
|
db.session.query(RecordModel).delete()
|
||||||
|
db.session.query(CategoryModel).delete()
|
||||||
db.session.query(UserModel).delete()
|
db.session.query(UserModel).delete()
|
||||||
db.session.commit()
|
db.session.commit()
|
||||||
return {}, 200
|
return {}, 200
|
||||||
|
@ -132,12 +134,12 @@ def ep_category_get():
|
||||||
body = request.json
|
body = request.json
|
||||||
|
|
||||||
if 'uuid' in body:
|
if 'uuid' in body:
|
||||||
category = ldb.get_category(body['uuid'])
|
result = db.session.query(CategoryModel).filter(CategoryModel.uuid == body['uuid']).all()
|
||||||
|
|
||||||
if 'uuid' in category:
|
if len(result) == 1:
|
||||||
return category
|
return user_schema.dumps(result[0]), 200
|
||||||
else:
|
else:
|
||||||
return category, 404
|
return {}, 404
|
||||||
else:
|
else:
|
||||||
return {}, 403
|
return {}, 403
|
||||||
|
|
||||||
|
@ -145,81 +147,136 @@ def ep_category_get():
|
||||||
def ep_category_post():
|
def ep_category_post():
|
||||||
body = request.json
|
body = request.json
|
||||||
|
|
||||||
if 'name' in body:
|
if not body:
|
||||||
r = ldb.add_category(body['name'])
|
|
||||||
|
|
||||||
if 'uuid' in r:
|
|
||||||
return r
|
|
||||||
else:
|
|
||||||
return r, 403
|
|
||||||
else:
|
|
||||||
return {}, 403
|
return {}, 403
|
||||||
|
|
||||||
|
if 'uuid' in body:
|
||||||
|
return {}, 403
|
||||||
|
|
||||||
|
body.update({'uuid': uuid.uuid4().hex})
|
||||||
|
|
||||||
|
try:
|
||||||
|
_ = category_schema.load(body)
|
||||||
|
except ValidationError as e:
|
||||||
|
return {}, 403
|
||||||
|
|
||||||
|
c = CategoryModel(**body)
|
||||||
|
|
||||||
|
try:
|
||||||
|
db.session.add(c)
|
||||||
|
db.session.commit()
|
||||||
|
except Exception as e:
|
||||||
|
db.session.rollback()
|
||||||
|
return {}, 403
|
||||||
|
|
||||||
|
return jsonify(category_schema.load(body)), 200
|
||||||
|
|
||||||
@app.route("/category", methods = ["DELETE"])
|
@app.route("/category", methods = ["DELETE"])
|
||||||
def ep_category_delete():
|
def ep_category_delete():
|
||||||
body = request.json
|
body = request.json
|
||||||
|
|
||||||
if 'uuid' in body:
|
if 'uuid' not in body:
|
||||||
category = ldb.del_category(body['uuid'])
|
|
||||||
|
|
||||||
if 'uuid' in category:
|
|
||||||
return category
|
|
||||||
else:
|
|
||||||
return category, 404
|
|
||||||
else:
|
|
||||||
return {}, 403
|
return {}, 403
|
||||||
|
|
||||||
|
cat_id = body['uuid']
|
||||||
|
|
||||||
|
try:
|
||||||
|
result = db.session.query(CategoryModel).filter(CategoryModel.uuid == cat_id).all()
|
||||||
|
except Exception as e:
|
||||||
|
return {}, 403
|
||||||
|
|
||||||
|
if len(result) == 0:
|
||||||
|
return {}, 404
|
||||||
|
|
||||||
|
db.session.query(CategoryModel).filter(CategoryModel.uuid == cat_id).delete()
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
return category_schema.dumps(result[0]), 200
|
||||||
|
|
||||||
@app.route("/record/<record_id>", methods = ["GET"])
|
@app.route("/record/<record_id>", methods = ["GET"])
|
||||||
def ep_record_get(record_id):
|
def ep_record_get(record_id):
|
||||||
r = ldb.get_record(record_id)
|
result = db.session.query(RecordModel).filter(RecordModel.uuid == record_id).all()
|
||||||
|
|
||||||
if 'uuid' in r:
|
if len(result) == 1:
|
||||||
return r
|
return user_schema.dumps(result[0]), 200
|
||||||
else:
|
else:
|
||||||
return r, 404
|
return {}, 404
|
||||||
|
|
||||||
@app.route("/record", methods = ["GET"])
|
@app.route("/record", methods = ["GET"])
|
||||||
def ep_record_get_filtered():
|
def ep_record_get_filtered():
|
||||||
options = {}
|
r = db.session.query(RecordModel)
|
||||||
|
|
||||||
|
filtered = False
|
||||||
|
|
||||||
if 'user_id' in request.json:
|
if 'user_id' in request.json:
|
||||||
options['user_id'] = request.json['user_id']
|
r = r.filter(RecordModel.user_uuid == request.json['user_id'])
|
||||||
|
filtered = True
|
||||||
|
elif 'user_uuid' in request.json:
|
||||||
|
r = r.filter(RecordModel.user_uuid == request.json['user_uuid'])
|
||||||
|
filtered = True
|
||||||
|
|
||||||
if 'cat_id' in request.json:
|
if 'cat_id' in request.json:
|
||||||
options['cat_id'] = request.json['cat_id']
|
r = r.filter(RecordModel.cat_uuid == request.json['cat_id'])
|
||||||
|
filtered = True
|
||||||
|
if 'cat_uuid' in request.json:
|
||||||
|
r = r.filter(RecordModel.cat_uuid == request.json['cat_uuid'])
|
||||||
|
filtered = True
|
||||||
|
|
||||||
if len(list(options.keys())) == 0:
|
|
||||||
return [], 400
|
|
||||||
|
|
||||||
r = ldb.filter_records(options)
|
if filtered:
|
||||||
|
return records_schema.dumps(r.all())
|
||||||
return json.dumps(r)
|
else:
|
||||||
|
return [], 403
|
||||||
|
|
||||||
@app.route("/record/<record_id>", methods = ["DELETE"])
|
@app.route("/record/<record_id>", methods = ["DELETE"])
|
||||||
def ep_record_del(record_id):
|
def ep_record_del(record_id):
|
||||||
r = ldb.del_record(record_id)
|
try:
|
||||||
|
result = db.session.query(RecordModel).filter(RecordModel.uuid == record_id).all()
|
||||||
|
except Exception as e:
|
||||||
|
return {}, 403
|
||||||
|
|
||||||
if 'uuid' in r:
|
if len(result) == 0:
|
||||||
return r
|
return {}, 404
|
||||||
else:
|
|
||||||
return r, 404
|
db.session.query(RecordModel).filter(RecordModel.uuid == record_id).delete()
|
||||||
|
db.session.commit()
|
||||||
|
|
||||||
|
return record_schema.dumps(result[0]), 200
|
||||||
|
|
||||||
@app.route("/record", methods = ["POST"])
|
@app.route("/record", methods = ["POST"])
|
||||||
def ep_record_post():
|
def ep_record_post():
|
||||||
body = request.json
|
body = request.json
|
||||||
|
|
||||||
if 'user_id' not in body:
|
if not body:
|
||||||
return {}, 400
|
return {}, 403
|
||||||
|
|
||||||
if 'cat_id' not in body:
|
if 'uuid' in body:
|
||||||
return {}, 400
|
return {}, 403
|
||||||
|
|
||||||
if 'amount' not in body:
|
body.update({'uuid': uuid.uuid4().hex})
|
||||||
return {}, 400
|
|
||||||
|
|
||||||
r = ldb.add_record(body['user_id'], body['cat_id'], body['amount'])
|
# backward compatibility with lab2 DB model
|
||||||
|
if 'cat_id' in body:
|
||||||
|
body.update({'cat_uuid': body['cat_id']})
|
||||||
|
del body['cat_id']
|
||||||
|
|
||||||
if 'uuid' in r:
|
if 'user_id' in body:
|
||||||
return r
|
body.update({'user_uuid': body['user_id']})
|
||||||
else:
|
del body['user_id']
|
||||||
return r, 403
|
|
||||||
|
try:
|
||||||
|
_ = record_schema.load(body)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
return {}, 403
|
||||||
|
|
||||||
|
r = RecordModel(**body)
|
||||||
|
|
||||||
|
try:
|
||||||
|
db.session.add(r)
|
||||||
|
db.session.commit()
|
||||||
|
except Exception as e:
|
||||||
|
db.session.rollback()
|
||||||
|
return {}, 403
|
||||||
|
|
||||||
|
return jsonify(record_schema.load(body)), 200
|
||||||
|
|
Loading…
Reference in New Issue