71 lines
3.0 KiB
Python
Executable File
71 lines
3.0 KiB
Python
Executable File
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 seed_cost_types():
|
|
engine = create_async_engine(DATABASE_URL)
|
|
async with engine.begin() as conn:
|
|
print("🔨 Költség típusok tábla létrehozása...")
|
|
await conn.execute(text("""
|
|
CREATE TABLE IF NOT EXISTS ref.cost_types (
|
|
code VARCHAR(50) PRIMARY KEY,
|
|
name VARCHAR(100) NOT NULL,
|
|
parent_code VARCHAR(50) REFERENCES ref.cost_types(code), -- Hierarchia!
|
|
is_active BOOLEAN DEFAULT TRUE,
|
|
sort_order INTEGER DEFAULT 0
|
|
);
|
|
"""))
|
|
|
|
print("📥 Adatok feltöltése...")
|
|
# Először a szülők (Főkategóriák)
|
|
parents = [
|
|
('FUEL', '⛽ Tankolás', 10),
|
|
('PURCHASE', '💰 Beszerzés / Pénzügy', 20),
|
|
('INSURANCE', '📄 Biztosítás', 30),
|
|
('TAX', '🏛️ Adó / Illeték', 40),
|
|
('SERVICE', '🔧 Szerviz', 50),
|
|
('OTHER', 'Egyéb', 99)
|
|
]
|
|
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]})
|
|
|
|
# Aztán a gyerekek (Alkategóriák)
|
|
children = [
|
|
# Beszerzés
|
|
('PURCHASE_PRICE', 'Vételár', 'PURCHASE'),
|
|
('FINANCE_LEASE', 'Lízing díj', 'PURCHASE'),
|
|
('FINANCE_LOAN', 'Hitel törlesztő', 'PURCHASE'),
|
|
('IMPORT_FEE', 'Honosítás / Regadó', 'PURCHASE'),
|
|
# Biztosítás
|
|
('INSURANCE_KGFB', 'Kötelező (KGFB)', 'INSURANCE'),
|
|
('INSURANCE_CASCO', 'Casco', 'INSURANCE'),
|
|
('INSURANCE_GAP', 'GAP', 'INSURANCE'),
|
|
('INSURANCE_ASSIST', 'Assistance', 'INSURANCE'),
|
|
# Adó
|
|
('TAX_WEIGHT', 'Gépjárműadó (Súlyadó)', 'TAX'),
|
|
('TAX_COMPANY', 'Cégautóadó', 'TAX'),
|
|
('TAX_TRANSFER', 'Vagyonszerzési illeték', 'TAX'),
|
|
('TAX_OTHER', 'Egyéb adó', 'TAX'),
|
|
# Szerviz
|
|
('SERVICE_MAINTENANCE', 'Kötelező karbantartás', 'SERVICE'),
|
|
('SERVICE_REPAIR', 'Javítás', 'SERVICE'),
|
|
('SERVICE_TIRE', 'Gumicsere', 'SERVICE'),
|
|
('SERVICE_MOT', 'Műszaki vizsga', 'SERVICE')
|
|
]
|
|
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 tudás most már az adatbázisban van, nem a HTML-ben.")
|
|
await engine.dispose()
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(seed_cost_types()) |