# /opt/docker/dev/service_finder/backend/app/database.py from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker from sqlalchemy.orm import DeclarativeBase from app.core.config import settings # 1. Base definíciója - Ezt importálják a modellek class Base(DeclarativeBase): """ Központi SQLAlchemy Base osztály. A modellek a 'from app.database import Base' segítségével érik el. """ pass # 2. Engine és SessionLocal beállítása engine = create_async_engine( str(settings.SQLALCHEMY_DATABASE_URI), echo=settings.DEBUG_MODE, pool_size=20, max_overflow=10, pool_pre_ping=True, ) AsyncSessionLocal = async_sessionmaker( autocommit=False, autoflush=False, bind=engine, class_=AsyncSession, expire_on_commit=False ) # 3. A "Körforgás-törő" függvény def ensure_models_loaded(): """ Dinamikusan betölti az összes modellt a regiszter segítségével. Helyi importot használunk, hogy elkerüljük a körkörös függőséget: database -> registry -> database (Base) """ try: # Itt importálunk helyben, így a Base már létezik a memóriában from app.models.registry import load_all_models load_all_models() print("✅ Adatbázis modellek regisztrálva a MetaData-ba.") except ImportError as e: print(f"⚠️ Hiba a modellek dinamikus betöltésekor: {e}") # Automatikus betöltés meghívása (opcionális, de ajánlott az API indításakor) # ensure_models_loaded()