seed vehicle trims catalog

This commit is contained in:
VPN SaaS Dev
2026-05-12 04:44:19 +09:00
parent f7a3b8be54
commit b5012ec6e7
9 changed files with 335 additions and 21 deletions

View File

@@ -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