SmartEDT/backend/database/engine.py

19 lines
515 B
Python

from __future__ import annotations
from sqlalchemy.ext.asyncio import AsyncEngine, AsyncSession, async_sessionmaker, create_async_engine
from backend.config.settings import DatabaseSettings
def create_engine(settings: DatabaseSettings) -> AsyncEngine:
return create_async_engine(
settings.url,
pool_pre_ping=True,
future=True,
)
def create_session_factory(engine: AsyncEngine) -> async_sessionmaker[AsyncSession]:
return async_sessionmaker(engine, expire_on_commit=False)