seed vehicle trims catalog
This commit is contained in:
@@ -4,7 +4,7 @@ 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.models.car import CarMake, CarModel
|
||||
from app.schemas.car import CarMakeRead
|
||||
|
||||
router = APIRouter(prefix="/catalog", tags=["catalog"])
|
||||
@@ -13,9 +13,13 @@ 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)
|
||||
select(CarMake)
|
||||
.options(selectinload(CarMake.models).selectinload(CarModel.trims))
|
||||
.order_by(CarMake.name)
|
||||
)
|
||||
makes = list(result.scalars())
|
||||
for make in makes:
|
||||
make.models.sort(key=lambda model: model.name)
|
||||
for model in make.models:
|
||||
model.trims.sort(key=lambda trim: trim.name)
|
||||
return makes
|
||||
|
||||
Reference in New Issue
Block a user