categories.py 698 B

1234567891011121314151617
  1. from fastapi import APIRouter, Depends
  2. from sqlalchemy import select
  3. from sqlalchemy.ext.asyncio import AsyncSession
  4. from ..database import get_db
  5. from ..models import Category
  6. from ..schemas import CategoryListResponse, CategoryOut
  7. router = APIRouter(prefix="/api/v1", tags=["Categories"])
  8. @router.get("/categories", response_model=CategoryListResponse)
  9. async def list_categories(db: AsyncSession = Depends(get_db)) -> CategoryListResponse:
  10. stmt = select(Category).order_by(Category.sort_order.asc(), Category.name.asc())
  11. result = await db.execute(stmt)
  12. categories = result.scalars().all()
  13. return CategoryListResponse(items=[CategoryOut.model_validate(c) for c in categories])