Files
api-inventario/app/routers/products.py
2026-04-11 03:58:41 +00:00

46 lines
1.7 KiB
Python

from fastapi import APIRouter, Depends, HTTPException, Query
from sqlalchemy.orm import Session
from app.database import get_db
from app.schemas.product import ProductCreate, ProductUpdate, ProductResponse
from app.services import product_service
router = APIRouter()
@router.post("", response_model=ProductResponse, status_code=201)
def create(data: ProductCreate, db: Session = Depends(get_db)):
return product_service.create_product(db, data)
@router.get("", response_model=list[ProductResponse])
def listar(skip: int = Query(0), limit: int = Query(20), db: Session = Depends(get_db)):
return product_service.get_products(db, skip, limit)
@router.get("/low-stock", response_model=list[ProductResponse])
def low_stock(db: Session = Depends(get_db)):
return product_service.get_low_stock_products(db)
@router.get("/{product_id}", response_model=ProductResponse)
def obtener(product_id: str, db: Session = Depends(get_db)):
prod = product_service.get_product(db, product_id)
if not prod:
raise HTTPException(status_code=404, detail="Producto no encontrado")
return prod
@router.put("/{product_id}", response_model=ProductResponse)
def actualizar(product_id: str, data: ProductUpdate, db: Session = Depends(get_db)):
prod = product_service.update_product(db, product_id, data)
if not prod:
raise HTTPException(status_code=404, detail="Producto no encontrado")
return prod
@router.delete("/{product_id}", status_code=204)
def eliminar(product_id: str, db: Session = Depends(get_db)):
ok = product_service.delete_product(db, product_id)
if not ok:
raise HTTPException(status_code=404, detail="Producto no encontrado")