"""Database configuration and session management.""" import os from pathlib import Path from sqlalchemy import create_engine from sqlalchemy.orm import declarative_base, sessionmaker # Ensure data directory exists data_dir = Path("./data") data_dir.mkdir(exist_ok=True) # Use SQLite database DATABASE_URL = os.getenv("DATABASE_URL", "sqlite:///./data/app.db") # Create engine with SQLite-specific settings engine = create_engine( DATABASE_URL, connect_args={"check_same_thread": False} if "sqlite" in DATABASE_URL else {}, echo=False, ) SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) Base = declarative_base() def get_db(): """Dependency for getting database session.""" db = SessionLocal() try: yield db finally: db.close() def init_db(): """Initialize database tables.""" Base.metadata.create_all(bind=engine)