32 lines
877 B
Python
32 lines
877 B
Python
"""Products API endpoints."""
|
|
|
|
from fastapi import APIRouter, HTTPException
|
|
|
|
from app.schemas.product import Product
|
|
from app.services.design_service import DesignService
|
|
|
|
router = APIRouter()
|
|
design_service = DesignService()
|
|
|
|
|
|
@router.get("", response_model=list[Product])
|
|
async def list_products(
|
|
category: str | None = None,
|
|
product_type: str | None = None,
|
|
):
|
|
"""List all products (designs with variants flattened for storefront)."""
|
|
products = await design_service.list_products(
|
|
category=category,
|
|
product_type=product_type,
|
|
)
|
|
return products
|
|
|
|
|
|
@router.get("/{slug}", response_model=Product)
|
|
async def get_product(slug: str):
|
|
"""Get a single product by slug."""
|
|
product = await design_service.get_product(slug)
|
|
if not product:
|
|
raise HTTPException(status_code=404, detail="Product not found")
|
|
return product
|