CoolFace
Apppublic

VIPC/ghost-kitchen-backend

sourceHugging Faceupdated 3mo agoView on Hugging Face
0likes
menu.py41 linesDownload Raw Back to routers
1from fastapi import APIRouter, Depends, HTTPException2from typing import List3from sqlalchemy.orm import Session4from app.core.database import get_db5from app.services import menu_service6from app.schemas.product import ProductResponse, ProductDetail7 8router = APIRouter(prefix="/menu", tags=["Menú y Productos"])9 10# --- Endpoint para listar todos los productos (opcional, si lo usas) ---11@router.get("/productos", response_model=List[ProductResponse])12def ver_productos(db: Session = Depends(get_db)):13    return menu_service.obtener_productos(db)14 15# --- Endpoint DETALLE DEL PRODUCTO (Aquí estaba el error) ---16@router.get("/productos/{id}", response_model=ProductDetail)17def ver_detalle_producto(id: int, db: Session = Depends(get_db)):18    """19    Obtiene el detalle de un producto específico.20    Se usa cuando el cliente da click a un plato en la lista.21    """22    producto = menu_service.obtener_producto_por_id(db, id)23    24    if not producto:25        raise HTTPException(status_code=404, detail="Producto no encontrado")26    27    # Construimos la respuesta combinando datos del producto y su cocina28    return {29        "id": producto.id,30        "nombre": producto.nombre,31        "precio": producto.precio,32        "descripcion": producto.descripcion,33        "disponible": producto.disponible,34        35        # 👇👇👇 ESTA ES LA LÍNEA QUE FALTABA 👇👇👇36        "imagen_url": producto.imagen_url,37        # 👆👆👆 AGREGA ESTO 👆👆👆38        39        "cocina_id": producto.cocina.id,       # Acceso por relación ORM40        "cocina_nombre": producto.cocina.nombre # Acceso por relación ORM41    }