diff --git a/Backend/FastAPI/main.py b/Backend/FastAPI/main.py index 09d72fa5..ff3607c8 100644 --- a/Backend/FastAPI/main.py +++ b/Backend/FastAPI/main.py @@ -7,26 +7,31 @@ # Instala FastAPI: pip install "fastapi[all]" from fastapi import FastAPI -from routers import products, users, basic_auth_users, jwt_auth_users, users_db -from fastapi.staticfiles import StaticFiles +from routers import products, clients +#from fastapi.staticfiles import StaticFiles app = FastAPI() -# Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=12475 +#Routers app.include_router(products.router) -app.include_router(users.router) +app.include_router(clients.router) + + +# Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=12475 +#app.include_router(products.router) +#app.include_router(users.router) # Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=14094 -app.include_router(basic_auth_users.router) +#app.include_router(basic_auth_users.router) # Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=17664 -app.include_router(jwt_auth_users.router) +#app.include_router(jwt_auth_users.router) # Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=20480 -app.include_router(users_db.router) +#app.include_router(users_db.router) # Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=13618 -app.mount("/static", StaticFiles(directory="static"), name="static") +#app.mount("/static", StaticFiles(directory="static"), name="static") # Url local: http://127.0.0.1:8000 diff --git a/Backend/FastAPI/routers/clients.py b/Backend/FastAPI/routers/clients.py new file mode 100644 index 00000000..fc05f690 --- /dev/null +++ b/Backend/FastAPI/routers/clients.py @@ -0,0 +1,80 @@ +from fastapi import APIRouter, HTTPException +from pydantic import BaseModel + +router = APIRouter(prefix="/clients", + responses={404: {"description": "Not found"}}, + tags=["clients"]) + + +# Entidad client +class Client(BaseModel): + id: int + name: str + lastname: str + age: int + location: str + +clients_list = [Client(id=1, name="Gianni", lastname="Tibaldi", age=35, location="General Deheza"), + Client(id=2, name="Joaquín", lastname="Fernandez", age=65, location="Rio Cuarto"), + Client(id=3, name="Fernando", lastname="Gomez", age=44, location="Baigorria"), + Client(id=4, name="Roberto", lastname="Ramirez", age=39, location="Alcira Gigena")] + +@router.get("/clientsjson") +async def clientsjson(): + return [{"name": "Gianni", "lastname": "Tibaldi", "age": "35","location": "General Deheza"}, + {"name": "Joaquín", "lastname": "Fernandez", "age": "65", "location": "Rio Cuarto"}, + {"name": "Fernando", "lastname": "Gomez", "age": "44","location": "Baigorria"}, + {"name": "Roberto", "lastname": "Ramirez", "age": "39","location": "Alcira Gigena"}] + + +@router.get("/clients") +async def clients(): + return clients_list + + +@router.get("/client/") +async def client(id: int): + return search_client(id) + + +#Operacion POST +@router.post("/client/", response_model=Client, status_code=201) +async def create_client(client: Client): + if search_client_silent(client.id): + raise HTTPException(status_code=400, detail="Ya existe un cliente con ese ID") + clients_list.append(client) + return client + +#Operacion PUT +@router.put("/client/") +async def update_client(client: Client): + client_found = search_client_silent(client.id) + if not client_found: + raise HTTPException(status_code=404, detail="No existe un cliente con ese ID") + clients_list.remove(client_found) + clients_list.append(client) + return client + +#Operacion DELETE +@router.delete("/client/{id}") +async def delete_client(id: int): + client_found = search_client_silent(id) + if not client_found: + raise HTTPException(status_code=404, detail="No existe un cliente con ese ID") + clients_list.remove(client_found) + raise HTTPException(status_code=200, detail="Se ha eliminado el cliente") + return client_found + + +#Funciones +def search_client(id: int): + clients = filter(lambda client: client.id == id, clients_list) + try: + return list(clients)[0] + except: + raise HTTPException(status_code=404, detail="No hay un cliente actualmente") + + +def search_client_silent(id: int): + clients = list(filter(lambda client: client.id == id, clients_list)) + return clients[0] if clients else None \ No newline at end of file diff --git a/Backend/FastAPI/routers/products.py b/Backend/FastAPI/routers/products.py index 6d85b336..4d8bec53 100644 --- a/Backend/FastAPI/routers/products.py +++ b/Backend/FastAPI/routers/products.py @@ -1,22 +1,47 @@ -# Clase en vídeo: https://youtu.be/_y9qQZXE24A?t=12475 +from fastapi import APIRouter +from pydantic import BaseModel -### Products API ### +router = APIRouter(prefix="/products", + responses={404: {"description": "Not found"}}, + tags=["products"]) + +class Client(BaseModel): + id: int + name: str + price: int -from fastapi import APIRouter -router = APIRouter(prefix="/products", - tags=["products"], - responses={404: {"message": "No encontrado"}}) +products_list = [ + Client(id=1, name="Galletitas", price=100), + Client(id=2, name="Galletas", price=200), + Client(id=3, name="Galletitas de agua", price=300), + Client(id=4, name="Galletas de chocolate", price=400), + Client(id=5, name="Galletas de vainilla", price=500),] -products_list = ["Producto 1", "Producto 2", - "Producto 3", "Producto 4", "Producto 5"] +@router.get("/{id}") +async def products(id: int): + return products_list[id] @router.get("/") async def products(): return products_list -@router.get("/{id}") -async def products(id: int): - return products_list[id] +@router.get("/product/") +async def product(id: int): + return search_product(id) + + +#Funciones +def search_product(id: int): + products = filter(lambda product: product.id == id, products_list) + try: + return list(products)[0] + except: + raise HTTPException(status_code=404, detail="No existe este producto actualmente") + + +def search_product_silent(id: int): + products = list(filter(lambda product: product.id == id, products_list)) + return products[0] if products else None