""" Database connection and session management """ import os from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession from sqlalchemy.orm import sessionmaker, declarative_base from sqlalchemy import create_engine DATABASE_URL = os.getenv("DATABASE_URL", "postgresql://rates:rates_secret@localhost:5432/rates_db") ASYNC_DATABASE_URL = DATABASE_URL.replace("postgresql://", "postgresql+asyncpg://") async_engine = create_async_engine(ASYNC_DATABASE_URL, echo=False) AsyncSessionLocal = sessionmaker( async_engine, class_=AsyncSession, expire_on_commit=False ) sync_engine = create_engine(DATABASE_URL) SyncSessionLocal = sessionmaker(bind=sync_engine) Base = declarative_base() async def get_db(): async with AsyncSessionLocal() as session: try: yield session finally: await session.close() def get_sync_db(): db = SyncSessionLocal() try: yield db finally: db.close()