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