# /opt/docker/dev/service_finder/backend/app/workers/py_to_database.py
import asyncio
import importlib
import os
import sys
from sqlalchemy import text
from app.database import engine, Base

# Biztosítjuk, hogy a Python látja az /app mappát
sys.path.append("/app")

async def sync_database():
    print("\n" + "═"*60)
    print("🚀 SENTINEL DATABASE SYNC - MB2.0")
    print("═"*60)

    # 1. Sémák kényszerítése (hogy ne ezen bukjon el)
    async with engine.begin() as conn:
        for schema in ["data", "identity", "system", "audit"]:
            await conn.execute(text(f"CREATE SCHEMA IF NOT EXISTS {schema}"))
    print("✅ Sémák ellenőrizve.")

    # 2. Modellek importálása (Szabályos úton)
    # A diagnózis alapján ezek a fájlok biztosan ott vannak
    model_modules = [
        "address", "audit", "document", "history", "legal", "organization",
        "security", "social", "system", "vehicle_definitions", "asset",
        "core_logic", "gamification", "identity", "logistics", "payment",
        "service", "staged_data", "translation"
    ]

    print(f"📂 Modellek betöltése...")
    for m in model_modules:
        try:
            # Ez a módszer regisztrálja a modult a sys.modules-ba
            importlib.import_module(f"app.models.{m}")
            print(f"  📦 [OK] app.models.{m}")
        except Exception as e:
            print(f"  ⚠️ [INFO] app.models.{m} betöltése (vagy függősége) kihagyva: {e}")

    # 3. Fizikai szinkronizáció
    print(f"\n🏗️  Táblák létrehozása (Összesen: {len(Base.metadata.tables)} darab)...")
    async with engine.begin() as conn:
        # Ez a parancs hozza létre az összes hiányzó táblát
        await conn.run_sync(Base.metadata.create_all)
    
    print("\n" + "═"*60)
    print("✅ KÉSZ! Az adatbázis most már tartalmazza a System és Translation táblákat is.")
    print("═"*60)

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