# /opt/docker/dev/service_finder/backend/app/init_db_direct.py
import asyncio
import logging
from sqlalchemy import text
from app.database import engine, Base

# 1. LOGIKA: Minden modell importálása
# Ez KRITIKUS: A SQLAlchemy Metadata csak akkor látja a táblákat, ha a Python 
# értelmező már "találkozott" az osztályokkal.
from app.models.identity import User, Person, SocialAccount
from app.models.organization import Organization
from app.models.asset import Asset, AssetCatalog, AssetTelemetry
from app.models.service import ServiceProfile, ExpertiseTag, ServiceExpertise
from app.models.system import SystemParameter
from app.models.history import AuditLog
from app.models.security import PendingAction
from app.models.translation import Translation
from app.models.staged_data import ServiceStaging, DiscoveryParameter
from app.models.social import ServiceProvider, Vote, Competition, UserScore

logging.basicConfig(level=logging.INFO)
logger = logging.getLogger("DB-Initializer")

async def init_db():
    logger.info("🚀 Adatbázis inicializálása indítva (MB2.0 Standard)...")
    
    async with engine.begin() as conn:
        # 2. LOGIKA: Sémák létrehozása
        # SQLAlchemy nem hozza létre a sémákat automatikusan, ezt nekünk kell megtenni.
        logger.info("📂 Sémák létrehozása (identity, data)...")
        await conn.execute(text("CREATE SCHEMA IF NOT EXISTS identity;"))
        await conn.execute(text("CREATE SCHEMA IF NOT EXISTS data;"))
        
        # 3. LOGIKA: Táblák létrehozása
        logger.info("🏗️ Táblák és kapcsolatok generálása a Metadata alapján...")
        # Ez a run_sync hívás futtatja le a klasszikus szinkron create_all-t az aszinkron kapcsolaton
        await conn.run_sync(Base.metadata.create_all)
        
    logger.info("✅ Minden tábla sikeresen létrejött a megfelelő sémákban!")

if __name__ == "__main__":
    try:
        asyncio.run(init_db())
    except Exception as e:
        logger.error(f"❌ Hiba az inicializálás során: {e}")