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 build_audit_system():
    engine = create_async_engine(DATABASE_URL)

    async with engine.begin() as conn:
        print("📜 Audit Log tábla létrehozása...")
        # Ez a tábla sosem töröl, csak ír! (Append-only)
        await conn.execute(text("""
            CREATE TABLE IF NOT EXISTS data.audit_logs (
                id SERIAL PRIMARY KEY,
                user_id INTEGER REFERENCES data.users(id), -- KI csinálta?
                event_type VARCHAR(50) NOT NULL,           -- MIT? (pl. ISSUE_REPORT, MILEAGE_UPDATE)
                target_id INTEGER,                         -- MELYIK autón? (Vehicle ID)
                old_value TEXT,                            -- MI volt előtte? (A visszaállításhoz)
                new_value TEXT,                            -- MI lett utána?
                details TEXT,                              -- Egyéb megjegyzés (pl. hiba leírása)
                ip_address VARCHAR(45),                    -- Honnan? (Biztonság)
                created_at TIMESTAMP DEFAULT NOW()
            );
        """))

        print("🚦 Jármű Státusz mezők hozzáadása...")
        # Bővítjük a járműveket, hogy tárolják a hibát
        await conn.execute(text("""
            ALTER TABLE data.vehicles 
            ADD COLUMN IF NOT EXISTS status VARCHAR(20) DEFAULT 'OK',  -- OK, WARNING, CRITICAL
            ADD COLUMN IF NOT EXISTS current_issue TEXT;               -- A hiba leírása
        """))

    print("✅ KÉSZ! A mindent látó szem (Audit Log) aktív.")
    await engine.dispose()

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