from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker from config.settings import settings import logging logging.basicConfig(level=logging.INFO) logger = logging.getLogger(__name__) DATABASE_URL = settings.database_url engine = create_async_engine(DATABASE_URL, echo=True) AsyncSessionLocal = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False) async def init_db(): from models.db import metadata try: async with engine.begin() as conn: await conn.run_sync(metadata.create_all) logger.info("Database tables created successfully.") except Exception as e: logger.error(f"Error creating database tables: {str(e)}") raise async def get_db(): async with AsyncSessionLocal() as session: yield session