22 lines
729 B
Python
22 lines
729 B
Python
from fastapi import APIRouter, Depends
|
|
from sqlalchemy import select
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from sqlalchemy.orm import selectinload
|
|
|
|
from app.db.session import get_session
|
|
from app.models.car import CarMake
|
|
from app.schemas.car import CarMakeRead
|
|
|
|
router = APIRouter(prefix="/catalog", tags=["catalog"])
|
|
|
|
|
|
@router.get("/makes", response_model=list[CarMakeRead])
|
|
async def list_makes(session: AsyncSession = Depends(get_session)) -> list[CarMake]:
|
|
result = await session.execute(
|
|
select(CarMake).options(selectinload(CarMake.models)).order_by(CarMake.name)
|
|
)
|
|
makes = list(result.scalars())
|
|
for make in makes:
|
|
make.models.sort(key=lambda model: model.name)
|
|
return makes
|