-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
64 lines (52 loc) · 1.86 KB
/
app.py
File metadata and controls
64 lines (52 loc) · 1.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
from flask import jsonify, Flask, request
import collections
app = Flask(__name__)
class Employee:
NEXT_ID = 1
def __init__(self, name, level):
self.id = Employee.NEXT_ID
Employee.NEXT_ID += 1
self.name = name
self.level = level
def to_dict(self):
return {"id": self.id, "name":self.name, "level":self.level}
Employees = collections.defaultdict(Employee)
@app.get("/health")
def health():
return jsonify({"status": "ok"})
@app.post("/add_employee")
def add_employee():
data = request.get_json() or {}
name = data.get("name")
level = data.get("level")
if not isinstance(name, str) or not name:
return jsonify({"error": "name required"}), 400
if not isinstance(level, int) or level == 0:
return jsonify({"error": "level is required"}), 400
employee = Employee(name, level)
Employees[employee.id] = employee
return jsonify({"id": employee.id}), 201
@app.put("/update_employee/<int:employee_id>")
def update_employee(employee_id):
if employee_id not in Employees:
return jsonify({"id not found id DB"}), 400
data = request.get_json() or {}
name = data.get("name")
level = data.get("level")
employee = Employees[employee_id]
if isinstance(name, str) and name:
employee.name = name
if isinstance(level, int) and level:
employee.level = level
return employee.to_dict(), 200
@app.get("/get_all_employees")
def get_all_employees():
return jsonify([Employees[e].to_dict() for e in Employees])
@app.delete("/delete_employee/<int:employee_id>")
def delete_employee(employee_id):
if employee_id not in Employees:
return jsonify({"id not found id DB"}), 400
Employees.pop(employee_id)
return jsonify({"employee id has been removed"}), 201
if __name__ == "__main__":
app.run("0.0.0.0", 5000, debug=True)