Spaces:
Paused
Paused
| import os | |
| from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession | |
| from sqlalchemy.orm import sessionmaker, declarative_base | |
| from dotenv import load_dotenv | |
| # Load .env variables | |
| load_dotenv() | |
| # Ensure your DATABASE_URL is in correct asyncpg format | |
| DATABASE_URL = os.getenv("DATABASE_URL") | |
| if not DATABASE_URL: | |
| raise RuntimeError("DATABASE_URL is not set in environment.") | |
| # Create the async engine | |
| engine = create_async_engine( | |
| DATABASE_URL, echo=True, future=True # Set echo=False in production | |
| ) | |
| # Session factory | |
| AsyncSessionLocal = sessionmaker( | |
| bind=engine, class_=AsyncSession, expire_on_commit=False | |
| ) | |
| # Base class for models | |
| Base = declarative_base() | |
| # Dependency for routes to get the async session | |
| async def get_db(): | |
| async with AsyncSessionLocal() as session: | |
| yield session | |