from typing import AsyncGenerator from sqlalchemy.ext.asyncio import create_async_engine, async_sessionmaker, AsyncSession from .config import ( PG_HOST, PG_LOGIN, PG_PORT, PG_DATABASE, PG_PASSWORD, ) # database_url = ( # f"postgresql+asyncpg://" # f"{PG_LOGIN}:{PG_PASSWORD}@" # f"/{PG_DATABASE}?host=/run/postgresql/" # ) database_url = ( f"postgresql+asyncpg://" f"{PG_LOGIN}:{PG_PASSWORD}@" f"{PG_HOST}:{PG_PORT}/{PG_DATABASE}" ) engine = create_async_engine( database_url, pool_timeout=2000, pool_size=10, pool_pre_ping=True, ) session_factory = async_sessionmaker( engine, expire_on_commit=False, autoflush=False, autocommit=False ) async def get_session() -> AsyncGenerator[AsyncSession, None]: async with session_factory() as session: yield session