# /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}")