backend: add users CRUD
This commit is contained in:
parent
42635e2281
commit
78b04811b9
@ -9,11 +9,13 @@ from flask import Flask, request, jsonify
|
|||||||
from dotenv import load_dotenv
|
from dotenv import load_dotenv
|
||||||
from db_client import DBClient
|
from db_client import DBClient
|
||||||
from car import registerCarEndpoints
|
from car import registerCarEndpoints
|
||||||
|
from user import registerUserEndpoints
|
||||||
|
|
||||||
load_dotenv()
|
load_dotenv()
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
database = DBClient()
|
database = DBClient()
|
||||||
registerCarEndpoints(app=app, database=database)
|
registerCarEndpoints(app=app, database=database)
|
||||||
|
registerUserEndpoints(app=app, database=database)
|
||||||
|
|
||||||
@app.route('/login', methods=['POST'])
|
@app.route('/login', methods=['POST'])
|
||||||
def login():
|
def login():
|
||||||
|
|||||||
111
backend/src/user.py
Normal file
111
backend/src/user.py
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# encoding: utf-8
|
||||||
|
|
||||||
|
'''
|
||||||
|
user.py is a source for all user endpoints.
|
||||||
|
'''
|
||||||
|
|
||||||
|
from flask import request, jsonify
|
||||||
|
|
||||||
|
def registerUserEndpoints(app, database):
|
||||||
|
@app.route('/users', methods=['GET'])
|
||||||
|
def get_users():
|
||||||
|
query = f'SELECT * from users'
|
||||||
|
users = database.query(query_str=query)
|
||||||
|
if not users:
|
||||||
|
return jsonify({"message": "No users exist"}), 404
|
||||||
|
response = {}
|
||||||
|
for user in users:
|
||||||
|
if len(user) != 3:
|
||||||
|
return jsonify({'error': 'User data is corrupted'}), 500
|
||||||
|
|
||||||
|
response.update({
|
||||||
|
"name": user[0],
|
||||||
|
"attendance": user[1],
|
||||||
|
"has_car": bool(user[2])
|
||||||
|
})
|
||||||
|
return jsonify(response), 200
|
||||||
|
|
||||||
|
@app.route('/user', methods=['GET'])
|
||||||
|
def get_user():
|
||||||
|
if not request.is_json:
|
||||||
|
return jsonify({'error': 'Request must contain JSON data'}), 400
|
||||||
|
|
||||||
|
data = request.get_json()
|
||||||
|
|
||||||
|
if not data.get('name'):
|
||||||
|
return jsonify({'error': 'Request must contain name field'}), 400
|
||||||
|
|
||||||
|
query = f'SELECT * from users WHERE name = %s'
|
||||||
|
output = database.query(query_str=query, params=(data['name'],))
|
||||||
|
if not output:
|
||||||
|
return jsonify({"message": "No user by that name exist"}), 404
|
||||||
|
user = output[0]
|
||||||
|
if len(user) != 3:
|
||||||
|
return jsonify({'error': 'User data is corrupted'}), 500
|
||||||
|
|
||||||
|
response = {
|
||||||
|
"name": user[0],
|
||||||
|
"attendance": user[1],
|
||||||
|
"has_car": bool(user[2])
|
||||||
|
}
|
||||||
|
return jsonify(response), 200
|
||||||
|
|
||||||
|
@app.route('/user', methods=['POST'])
|
||||||
|
def add_user():
|
||||||
|
if not request.is_json:
|
||||||
|
return jsonify({'error': 'Request must contain JSON data'}), 400
|
||||||
|
|
||||||
|
data = request.get_json()
|
||||||
|
if not data.get('name') or not data.get('attendance') or data.get('has_car') is None:
|
||||||
|
return jsonify({'error': 'JSON must contain user fields'}), 400
|
||||||
|
|
||||||
|
query = 'SELECT * from users WHERE name = %s'
|
||||||
|
output = database.query(query_str=query, params=(data['name'],))
|
||||||
|
if output:
|
||||||
|
return jsonify({'error': 'A person already exists'}), 409
|
||||||
|
|
||||||
|
query = 'INSERT into users (Name, Attendance, HasCar) VALUES (%s, %s, %s)'
|
||||||
|
output = database.query(query_str=query, params=(data['name'],data['attendance'],data['has_car']))
|
||||||
|
|
||||||
|
database.commit()
|
||||||
|
return jsonify({"message": "user added", "user": data}), 200
|
||||||
|
|
||||||
|
@app.route('/user', methods=['UPDATE'])
|
||||||
|
def update_user():
|
||||||
|
if not request.is_json:
|
||||||
|
return jsonify({'error': 'Request must contain JSON data'}), 400
|
||||||
|
|
||||||
|
data = request.get_json()
|
||||||
|
if not data.get('name') or not data.get('attendance') or data.get('has_car') is None:
|
||||||
|
return jsonify({'error': 'JSON must contain user fields'}), 400
|
||||||
|
|
||||||
|
query = 'SELECT * from users WHERE name = %s'
|
||||||
|
output = database.query(query_str=query, params=(data['name'],))
|
||||||
|
if not output:
|
||||||
|
return jsonify({'error': 'Such user does not exist. Add it first'}), 409
|
||||||
|
|
||||||
|
query = 'UPDATE user SET Name = %s, Attendance = %s, HasCar = %s'
|
||||||
|
output = database.query(query_str=query, params=(data['name'],data['attendance'],data['has_car']))
|
||||||
|
|
||||||
|
database.commit()
|
||||||
|
return jsonify({"message": "user modified", "user": data}), 200
|
||||||
|
|
||||||
|
@app.route('/user', methods=['DELETE'])
|
||||||
|
def delete_user():
|
||||||
|
if not request.is_json:
|
||||||
|
return jsonify({'error': 'Request must contain JSON data'}), 400
|
||||||
|
|
||||||
|
data = request.get_json()
|
||||||
|
if not data.get('name'):
|
||||||
|
return jsonify({'error': 'JSON must contain persons name to delete'}), 400
|
||||||
|
|
||||||
|
query = 'SELECT * from users WHERE name = %s'
|
||||||
|
output = database.query(query_str=query, params=(data['name'],))
|
||||||
|
if not output:
|
||||||
|
return jsonify({'error': 'Such person does not exist'}), 409
|
||||||
|
|
||||||
|
query = 'DELETE FROM users WHERE Name = %s'
|
||||||
|
output = database.query(query_str=query, params=(data['name'],))
|
||||||
|
database.commit()
|
||||||
|
return jsonify({"message": "user deleted"}), 200
|
||||||
Loading…
x
Reference in New Issue
Block a user