rswag-online/backend/app/api/products.py

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