diff options
Diffstat (limited to 'app/utils/db.py')
| -rw-r--r-- | app/utils/db.py | 38 |
1 files changed, 21 insertions, 17 deletions
diff --git a/app/utils/db.py b/app/utils/db.py index 4daca74..5531998 100644 --- a/app/utils/db.py +++ b/app/utils/db.py @@ -1,34 +1,38 @@ -import asyncio import os +from typing import AsyncGenerator from dotenv import load_dotenv -from sqlalchemy.ext.asyncio import AsyncSession, create_async_engine -from sqlalchemy.orm import DeclarativeBase, sessionmaker +from sqlalchemy.ext.asyncio import ( + AsyncEngine, + AsyncSession, + async_sessionmaker, + create_async_engine, +) +from sqlalchemy.orm import DeclarativeBase load_dotenv() + DATABASE_URL = os.getenv("DATABASE_URL") if not DATABASE_URL: raise ValueError("DATABASE_URL not found in .env") -engine = create_async_engine(DATABASE_URL, echo=True, future=True) -async_session = sessionmaker(bind=engine, class_=AsyncSession, expire_on_commit=False) + +engine: AsyncEngine = create_async_engine( + DATABASE_URL, + echo=True, + pool_pre_ping=True, +) + +async_session = async_sessionmaker( + bind=engine, + expire_on_commit=False, +) class Base(DeclarativeBase): pass -async def get_async_session() -> AsyncSession: +async def get_async_session() -> AsyncGenerator[AsyncSession, None]: async with async_session() as session: yield session - - -async def init_db(): - - async with engine.begin() as conn: - await conn.run_sync(Base.metadata.create_all) - - -if __name__ == "__main__": - asyncio.run(init_db()) - print("All tables created!") |
