Files
service-finder/backend/app/database.py
2026-03-13 10:22:41 +00:00

47 lines
1.5 KiB
Python
Executable File

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