forked from mouredev/Hello-Python
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathusers.py
More file actions
97 lines (63 loc) · 2.29 KB
/
users.py
File metadata and controls
97 lines (63 loc) · 2.29 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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=5382
### Users API ###
from fastapi import APIRouter, HTTPException
from pydantic import BaseModel
# Inicia el server: uvicorn users:app --reload
router = APIRouter()
class User(BaseModel):
id: int
name: str
surname: str
url: str
age: int
users_list = [User(id=1, name="Brais", surname="Moure", url="https://moure.dev", age=35),
User(id=2, name="Moure", surname="Dev",
url="https://mouredev.com", age=35),
User(id=3, name="Brais", surname="Dahlberg", url="https://haakon.com", age=33)]
@router.get("/usersjson")
async def usersjson(): # Creamos un JSON a mano
return [{"name": "Brais", "surname": "Moure", "url": "https://moure.dev", "age": 35},
{"name": "Moure", "surname": "Dev",
"url": "https://mouredev.com", "age": 35},
{"name": "Haakon", "surname": "Dahlberg", "url": "https://haakon.com", "age": 33}]
@router.get("/users")
async def users():
return users_list
@router.get("/user/{id}") # Path
async def user(id: int):
return search_user(id)
@router.get("/user/") # Query
async def user(id: int):
return search_user(id)
# Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=8529
@router.post("/user/", response_model=User, status_code=201)
async def user(user: User):
if type(search_user(user.id)) == User:
raise HTTPException(status_code=404, detail="El usuario ya existe")
users_list.append(user)
return user
@router.put("/user/")
async def user(user: User):
found = False
for index, saved_user in enumerate(users_list):
if saved_user.id == user.id:
users_list[index] = user
found = True
if not found:
return {"error": "No se ha actualizado el usuario"}
return user
@router.delete("/user/{id}")
async def user(id: int):
found = False
for index, saved_user in enumerate(users_list):
if saved_user.id == id:
del users_list[index]
found = True
if not found:
return {"error": "No se ha eliminado el usuario"}
def search_user(id: int):
users = filter(lambda user: user.id == id, users_list)
try:
return list(users)[0]
except:
return {"error": "No se ha encontrado el usuario"}