import asyncio
import os
from sqlalchemy.ext.asyncio import create_async_engine
from sqlalchemy import text
from dotenv import load_dotenv

load_dotenv()

raw_url = os.getenv("DATABASE_URL")
if not raw_url:
    raw_url = "postgresql://admin:PASSWORD_111@postgres-db:5432/service_finder"
DATABASE_URL = raw_url.replace("postgresql://", "postgresql+asyncpg://").replace("/service_finder_db", "/service_finder")

async def expand_categories():
    engine = create_async_engine(DATABASE_URL)
    async with engine.begin() as conn:
        print("📥 Új Főkategóriák beszúrása...")
        parents = [
            ('EQUIPMENT', '🛠️ Felszerelés / Extrák', 25), # Vételár után
            ('OPERATIONAL', '🅿️ Üzemeltetés / Út', 15),   # Tankolás után
            ('FINE', '👮 Bírság / Büntetés', 90)
        ]
        for p in parents:
            await conn.execute(text("INSERT INTO ref.cost_types (code, name, sort_order) VALUES (:c, :n, :s) ON CONFLICT (code) DO NOTHING"), {"c": p[0], "n": p[1], "s": p[2]})

        print("📥 Új Alkategóriák beszúrása...")
        children = [
            # Felszerelés (EQUIPMENT)
            ('EQUIP_SHELVING', 'Raktérburkolat / Polcrendszer', 'EQUIPMENT'),
            ('EQUIP_BRANDING', 'Matricázás / Fóliázás', 'EQUIPMENT'),
            ('EQUIP_TOWBAR', 'Vonóhorog / Tetőcsomagtartó', 'EQUIPMENT'),
            ('EQUIP_SAFETY', 'Kötelező tartozékok (Eü. csomag)', 'EQUIPMENT'),
            ('EQUIP_GPS', 'GPS / Nyomkövető hardver', 'EQUIPMENT'),
            ('EQUIP_WINTER_TIRE', 'Téli gumi szett (Beszerzés)', 'EQUIPMENT'),

            # Üzemeltetés (OPERATIONAL)
            ('OP_PARKING', 'Parkolás', 'OPERATIONAL'),
            ('OP_TOLL', 'Útdíj / Matrica / Behajtás', 'OPERATIONAL'),
            ('OP_WASH', 'Mosás / Kozmetika', 'OPERATIONAL'),
            ('OP_ADBLUE', 'AdBlue', 'OPERATIONAL'),
            ('OP_EV_CHARGE', 'Elektromos töltés', 'OPERATIONAL'),
            ('OP_STORAGE', 'Gumi hotel / Tárolás', 'OPERATIONAL'),

            # Bírság (FINE)
            ('FINE_SPEEDING', 'Gyorshajtás', 'FINE'),
            ('FINE_PARKING', 'Parkolási bírság', 'FINE'),
            ('FINE_ADMIN', 'Közigazgatási bírság', 'FINE')
        ]
        for c in children:
            await conn.execute(text("INSERT INTO ref.cost_types (code, name, parent_code) VALUES (:c, :n, :p) ON CONFLICT (code) DO NOTHING"), {"c": c[0], "n": c[1], "p": c[2]})

    print("✅ KÉSZ! A költséglista most már teljeskörű.")
    await engine.dispose()

if __name__ == "__main__":
    asyncio.run(expand_categories())