from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.ext.asyncio import AsyncSession from app.db.session import get_db from app.services.asset_service import AssetService from typing import List router = APIRouter() @router.get("/makes", response_model=List[str]) async def list_makes(db: AsyncSession = Depends(get_db)): """1. Szint: Márkák listázása.""" return await AssetService.get_makes(db) @router.get("/models", response_model=List[str]) async def list_models(make: str, db: AsyncSession = Depends(get_db)): """2. Szint: Típusok listázása egy adott márkához.""" models = await AssetService.get_models(db, make) if not models: raise HTTPException(status_code=404, detail="Márka nem található vagy nincsenek típusok.") return models @router.get("/generations", response_model=List[str]) async def list_generations(make: str, model: str, db: AsyncSession = Depends(get_db)): """3. Szint: Generációk/Évjáratok listázása.""" generations = await AssetService.get_generations(db, make, model) if not generations: raise HTTPException(status_code=404, detail="Nincs generációs adat ehhez a típushoz.") return generations @router.get("/engines") async def list_engines(make: str, model: str, gen: str, db: AsyncSession = Depends(get_db)): """4. Szint: Motorváltozatok és technikai specifikációk.""" engines = await AssetService.get_engines(db, make, model, gen) if not engines: raise HTTPException(status_code=404, detail="Nincs motorváltozat adat.") # Itt visszaküldjük a teljes katalógus objektumokat (ID, motorváltozat, specifikációk) return [ { "id": e.id, "variant": e.engine_variant, "engine_code": e.engine_code, "fuel_type": e.fuel_type, "factory_data": e.factory_data } for e in engines ]