"""Database connection and session management for Project Memory.""" from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker, declarative_base from pathlib import Path # Database file location DB_PATH = Path(__file__).parent.parent / "project_memory.db" DATABASE_URL = f"sqlite:///{DB_PATH}" # Create engine with SQLite-specific settings engine = create_engine( DATABASE_URL, connect_args={"check_same_thread": False}, # Needed for SQLite echo=False, # Set to True for SQL debugging ) # Session factory SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) # Base class for models Base = declarative_base() def get_db(): """Dependency that provides a database session.""" db = SessionLocal() try: yield db finally: db.close() def init_db(): """Initialize database tables.""" from app import models # noqa: F401 - Import models to register them Base.metadata.create_all(bind=engine)