import asyncio from sqlalchemy import select from sqlalchemy.orm import configure_mappers from app.db.session import SessionLocal # Fontos: Importálunk minden modellt a regisztrációhoz import app.models from app.models.vehicle_definitions import VehicleType, FeatureDefinition async def seed_system_data(): # Kényszerített mapper konfiguráció a hiba ellen try: configure_mappers() except Exception as e: print(f"⚠️ Mapper figyelmeztetés (lehet, hogy már kész): {e}") async with SessionLocal() as db: try: print("🚀 Kezdődik a rendszeradatok beoltása...") # 1. Jármű Fajták (Blueprints) types_data = [ {"code": "car", "name": "Személyautó", "icon": "directions_car"}, {"code": "motorcycle", "name": "Motorkerékpár", "icon": "moped"}, {"code": "truck", "name": "Teherautó/Kamion", "icon": "local_shipping"}, {"code": "bus", "name": "Autóbusz", "icon": "directions_bus"}, {"code": "boat", "name": "Hajó/Vitorlás", "icon": "sailing"}, {"code": "camper", "name": "Lakóautó", "icon": "rv_hookup"}, {"code": "machinery", "name": "Munkagép", "icon": "construction"}, {"code": "trailer", "name": "Utánfutó", "icon": "trailer"} ] type_id_map = {} for t_info in types_data: stmt = select(VehicleType).where(VehicleType.code == t_info["code"]) res = await db.execute(stmt) v_type = res.scalar_one_or_none() if not v_type: v_type = VehicleType(**t_info) db.add(v_type) await db.flush() type_id_map[t_info["code"]] = v_type.id # 2. Extrák (Features) betöltése - A te listád alapján features = { "car": [ ("Műszaki", "ABS (blokkolásgátló)"), ("Műszaki", "ESP (menetstabilizátor)"), ("Műszaki", "távolságtartó tempomat"), ("Beltér", "ISOFIX rendszer"), ("Multimédia", "Android Auto"), ("Multimédia", "Apple CarPlay") ], "truck": [ ("Munkavégzés", "elektromos retarder"), ("Munkavégzés", "intarder"), ("Munkavégzés", "AdBlue"), ("Fülke", "hálófülke") ], "boat": [ ("Műszaki", "orrsugárkormány"), ("Műszaki", "halradar"), ("Műszaki", "elektromos horgonycsörlő") ] } for code, items in features.items(): t_id = type_id_map.get(code) if not t_id: continue for cat, name in items: stmt = select(FeatureDefinition).where( FeatureDefinition.name == name, FeatureDefinition.vehicle_type_id == t_id ) res = await db.execute(stmt) if not res.scalar_one_or_none(): db.add(FeatureDefinition( vehicle_type_id=t_id, category=cat, name=name, data_type="boolean" )) await db.commit() print("✅ Minden alapadat (Types & Features) sikeresen betöltve!") except Exception as e: await db.rollback() print(f"❌ Végzetes hiba a feltöltés során: {e}") raise e if __name__ == "__main__": asyncio.run(seed_system_data())