From f1842be3bfabe7850d33662da2da377676144c48 Mon Sep 17 00:00:00 2001 From: l3wdfut4pwr Date: Tue, 21 Apr 2026 13:32:24 +0300 Subject: uv migration --- app/utils/db.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) (limited to 'app/utils/db.py') 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!") -- cgit v1.3-3-g829e