import os from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sessionmaker from sqlalchemy.ext.declarative import declarative_base from dotenv import load_dotenv # Загружаем переменные окружения load_dotenv() # Конфигурация базы данных DATABASE_URL = os.getenv("DATABASE_URL", "sqlite+aiosqlite:///./lottery_bot.db") # Создаем асинхронный движок engine = create_async_engine( DATABASE_URL, echo=True, # Логирование SQL запросов future=True, ) # Создаем фабрику сессий async_session_maker = async_sessionmaker( engine, class_=AsyncSession, expire_on_commit=False ) # Базовый класс для моделей Base = declarative_base() async def get_session() -> AsyncSession: """Получить асинхронную сессию базы данных""" async with async_session_maker() as session: yield session async def init_db(): """Инициализация базы данных""" async with engine.begin() as conn: await conn.run_sync(Base.metadata.create_all) async def close_db(): """Закрытие соединения с базой данных""" await engine.dispose()