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())