complete overhaul
This commit is contained in:
1 parent
0bc92cdb8b
commit
ee6c7719cf
18 files changed
+751
-440
No files matched your search
+131
@@ -0,0 +1,131 @@
|
||||
from flask import Flask, request, jsonify
|
||||
from database import *
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Initialise database on startup
|
||||
initialize_db()
|
||||
|
||||
# ----------------------------- Users -----------------------------
|
||||
|
||||
@app.route("/users", methods=["GET", "POST"])
|
||||
def users():
|
||||
if request.method == "GET":
|
||||
# Optional query parameters
|
||||
name = request.args.get("name")
|
||||
id = request.args.get("id", type=int)
|
||||
username = request.args.get("username")
|
||||
fields = request.args.get("fields")
|
||||
fields = fields.split(",") if fields else None
|
||||
users = get_user(name=name, id=id, username=username, fields=fields)
|
||||
return jsonify(users)
|
||||
|
||||
if request.method == "POST":
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Missing JSON body"}), 400
|
||||
name = data.get("name")
|
||||
age = data.get("age")
|
||||
photo = data.get("photo")
|
||||
username = data.get("username")
|
||||
if not all([name, age, username]):
|
||||
return jsonify({"error": "name, age and username required"}), 400
|
||||
result = add_user(name, age, photo, username)
|
||||
return jsonify(result), 201
|
||||
|
||||
@app.route("/users/<int:user_id>", methods=["PUT"])
|
||||
def update_user_route(user_id: int):
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Missing JSON body"}), 400
|
||||
name = data.get("name")
|
||||
photo = data.get("photo")
|
||||
settings = data.get("settings")
|
||||
result = update_user(user_id, name=name, photo=photo, settings=settings)
|
||||
return jsonify(result)
|
||||
|
||||
# ----------------------------- Providers -----------------------------
|
||||
|
||||
@app.route("/providers", methods=["GET", "POST"])
|
||||
def providers():
|
||||
if request.method == "GET":
|
||||
name = request.args.get("name")
|
||||
id = request.args.get("id", type=int)
|
||||
phone = request.args.get("phone")
|
||||
fields = request.args.get("fields")
|
||||
fields = fields.split(",") if fields else None
|
||||
provs = get_provider(name=name, id=id, phone=phone, fields=fields)
|
||||
return jsonify(provs)
|
||||
|
||||
if request.method == "POST":
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Missing JSON body"}), 400
|
||||
name = data.get("name")
|
||||
age = data.get("age")
|
||||
photo = data.get("photo")
|
||||
phone = data.get("phone")
|
||||
rates = data.get("rates", {})
|
||||
private = data.get("private", False)
|
||||
if not all([name, age, phone]):
|
||||
return jsonify({"error": "name, age and phone required"}), 400
|
||||
result = add_provider(name, age, photo, phone, rates, private)
|
||||
return jsonify(result), 201
|
||||
|
||||
@app.route("/providers/<int:prov_id>", methods=["PUT"])
|
||||
def update_provider_route(prov_id: int):
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Missing JSON body"}), 400
|
||||
name = data.get("name")
|
||||
phone = data.get("phone")
|
||||
rates = data.get("rates")
|
||||
private = data.get("private")
|
||||
photo = data.get("photo")
|
||||
result = update_provider(prov_id, name=name, phone=phone, rates=rates, private=private, photo=photo)
|
||||
return jsonify(result)
|
||||
|
||||
# ----------------------------- Visits -----------------------------
|
||||
|
||||
@app.route("/visits", methods=["GET", "POST"])
|
||||
def visits():
|
||||
if request.method == "GET":
|
||||
provider = request.args.get("provider", type=int)
|
||||
user = request.args.get("user", type=int)
|
||||
start = request.args.get("start")
|
||||
end = request.args.get("end")
|
||||
date_range = [start, end] if start and end else None
|
||||
visits_list = get_visits(provider=provider, user=user, date_range=date_range)
|
||||
return jsonify(visits_list)
|
||||
|
||||
if request.method == "POST":
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Missing JSON body"}), 400
|
||||
user_ids = data.get("user_ids", [])
|
||||
provider_ids = data.get("provider_ids", [])
|
||||
cost = data.get("cost")
|
||||
location = data.get("location")
|
||||
time = data.get("time")
|
||||
if not (user_ids and provider_ids and time):
|
||||
return jsonify({"error": "user_ids, provider_ids and time required"}), 400
|
||||
result = add_visit(user_ids, provider_ids, cost, location, time)
|
||||
return jsonify(result), 201
|
||||
|
||||
@app.route("/visits/<int:visit_id>", methods=["PUT"])
|
||||
def update_visit_route(visit_id: int):
|
||||
data = request.get_json()
|
||||
if not data:
|
||||
return jsonify({"error": "Missing JSON body"}), 400
|
||||
user_ids = data.get("user_ids")
|
||||
provider_ids = data.get("provider_ids")
|
||||
cost = data.get("cost")
|
||||
location = data.get("location")
|
||||
time = data.get("time")
|
||||
result = update_visit(visit_id, user_ids=user_ids, provider_ids=provider_ids,
|
||||
cost=cost, location=location, time=time)
|
||||
return jsonify(result)
|
||||
|
||||
# Run the app if this file is executed directly
|
||||
if __name__ == "__main__":
|
||||
app.run(host="0.0.0.0", port=5000, debug=False)
|
||||
Reference in new issue
Block a user