mirror of
https://github.com/Balshgit/gpt_chat_bot.git
synced 2025-09-11 22:30:41 +03:00
* add user table and superuser creation * add gpt-4-stream-aivvm provider * rename user migration to auth migration
34 lines
1.1 KiB
Python
34 lines
1.1 KiB
Python
from contextlib import asynccontextmanager, contextmanager
|
|
from typing import AsyncGenerator, Generator
|
|
|
|
from sqlalchemy import create_engine
|
|
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
|
|
from sqlalchemy.orm import Session, sessionmaker
|
|
|
|
from settings.config import settings
|
|
|
|
|
|
@contextmanager
|
|
def get_sync_session() -> Generator[Session, None, None]:
|
|
engine = create_engine(str(settings.sync_db_url), echo=settings.DB_ECHO)
|
|
session_factory = sessionmaker(engine)
|
|
try:
|
|
yield session_factory()
|
|
finally:
|
|
engine.dispose()
|
|
|
|
|
|
@asynccontextmanager
|
|
async def get_async_session() -> AsyncGenerator[AsyncSession, None]:
|
|
async_engine = create_async_engine(
|
|
str(settings.async_db_url),
|
|
echo=settings.DB_ECHO,
|
|
execution_options={"isolation_level": "AUTOCOMMIT"},
|
|
)
|
|
async_session_maker = async_sessionmaker(bind=async_engine, expire_on_commit=False)
|
|
try:
|
|
async with async_session_maker() as session:
|
|
yield session
|
|
finally:
|
|
await async_engine.dispose()
|