84 lines
3.6 KiB
Python
84 lines
3.6 KiB
Python
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()) |