VIPC/ghost-kitchen-backend
0
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 }