INNER CODE UNIT · Python
build_sa_engine
SamWarden/user_service · src/user_service/infrastructure/db/main.py:11
async def build_sa_engine(db_config: DBConfig) -> AsyncGenerator[AsyncEngine, None]:
engine = create_async_engine(
db_config.full_url,
echo=True,
echo_pool=db_config.echo,
json_serializer=lambda data: orjson.dumps(data).decode(),
json_deserializer=orjson.loads,
pool_size=50,
)
yield engine
await engine.dispose()
def build_sa_session_factory(engine: AsyncEngine) -> async_sessionmaker[AsyncSession]:
session_factory = async_sessionmaker(bind=engine, autoflush=False, expire_on_commit=False)
return session_factory