SPB Git

spb/uqo-chat

Public
1014 B · 33 lines python
1"""Async engine / session factory."""23from __future__ import annotations45from collections.abc import AsyncIterator67from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine89from app.core.config import get_settings10from app.models import Base1112_settings = get_settings()13engine = create_async_engine(14    _settings.database_url,15    echo=False,16    pool_pre_ping=True,17    connect_args={"timeout": 30} if _settings.database_url.startswith("sqlite") else {},18)19SessionLocal = async_sessionmaker(engine, expire_on_commit=False, class_=AsyncSession)202122async def init_db() -> None:23    async with engine.begin() as conn:24        if _settings.database_url.startswith("sqlite"):25            await conn.exec_driver_sql("PRAGMA journal_mode=WAL")26            await conn.exec_driver_sql("PRAGMA foreign_keys=ON")27        await conn.run_sync(Base.metadata.create_all)282930async def get_session() -> AsyncIterator[AsyncSession]:31    async with SessionLocal() as session:32        yield session33
Files · cd08d441f7c277e8fedd6f3d3be82f02b44553ba
Menu

Theme