Spaces:
Running on Zero
Running on Zero
| """ | |
| Database engine + session management. | |
| Stage 1 scope: users / conversations / messages only. | |
| Long-term memory tables (memories, memory_versions) are introduced in | |
| Stage 4 — do not add them here early, per the "don't over-engineer the | |
| first version" rule. | |
| """ | |
| from sqlalchemy import create_engine | |
| from sqlalchemy.orm import sessionmaker, declarative_base | |
| from app.config import settings | |
| connect_args = {"check_same_thread": False} if settings.database_url.startswith("sqlite") else {} | |
| engine = create_engine(settings.database_url, connect_args=connect_args) | |
| SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine) | |
| Base = declarative_base() | |
| def get_db(): | |
| """FastAPI dependency that yields a request-scoped DB session.""" | |
| db = SessionLocal() | |
| try: | |
| yield db | |
| finally: | |
| db.close() | |