Spaces:
Running on Zero
Running on Zero
File size: 837 Bytes
0d374d2 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | """
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()
|