diff --git a/backend/api/app.py b/backend/api/app.py index da9987b..d7b17ec 100644 --- a/backend/api/app.py +++ b/backend/api/app.py @@ -6,12 +6,16 @@ from dotenv import load_dotenv import logging import config +from api.routers import router logging.basicConfig(level=logging.INFO) logger = logging.getLogger() app = FastAPI(title="Stocky - Inventory Management") +app.include_router(router) + + # Middleware app.add_middleware( CORSMiddleware, diff --git a/backend/api/routers.py b/backend/api/routers.py index e69de29..d968d47 100644 --- a/backend/api/routers.py +++ b/backend/api/routers.py @@ -0,0 +1,67 @@ +from fastapi import APIRouter, HTTPException + +from services.product_service import ( + listar_produtos, + buscar_produto, + criar_produto, + atualizar_produto, + deletar_produto, + listar_estoque_atual, + Product, + ProductCreate, + ProductUpdate, + ProductWithStock, +) + +router = APIRouter() + + +# GET - listar produtos +@router.get("/produtos", response_model=list[Product]) +def get_produtos(): + return listar_produtos() + + +# GET - buscar produto por ID +@router.get("/produtos/{produto_id}", response_model=Product) +def get_produto(produto_id: str): + produto = buscar_produto(produto_id) + + if produto is None: + raise HTTPException(status_code=404, detail="Produto não encontrado") + + return produto + + +# POST - criar produto +@router.post("/produtos", response_model=Product) +def post_produto(data: ProductCreate): + return criar_produto(data) + + +# PUT - atualizar produto +@router.put("/produtos/{produto_id}", response_model=Product) +def put_produto(produto_id: str, data: ProductUpdate): + produto = atualizar_produto(produto_id, data) + + if produto is None: + raise HTTPException(status_code=404, detail="Produto não encontrado") + + return produto + + +# DELETE - deletar produto +@router.delete("/produtos/{produto_id}") +def delete_produto(produto_id: str): + deletado = deletar_produto(produto_id) + + if not deletado: + raise HTTPException(status_code=404, detail="Produto não encontrado") + + return {"success": True} + + +# GET - listar estoque atual +@router.get("/estoque", response_model=list[ProductWithStock]) +def get_estoque(): + return listar_estoque_atual() \ No newline at end of file