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