from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy import select from typing import List from app.database import get_db from app.models.product import Brand from app.schemas.product import BrandResponse router = APIRouter() @router.get("", response_model=List[BrandResponse]) async def get_brands(db: AsyncSession = Depends(get_db)): result = await db.execute( select(Brand).order_by(Brand.name.asc()) ) brands = result.scalars().all() return [BrandResponse.model_validate(b) for b in brands] @router.get("/{slug}", response_model=BrandResponse) async def get_brand(slug: str, db: AsyncSession = Depends(get_db)): result = await db.execute( select(Brand).where(Brand.slug == slug) ) brand = result.scalar_one_or_none() if not brand: raise HTTPException(status_code=404, detail="Brand not found") return BrandResponse.model_validate(brand)