DB - chatsession

abstract

Stores one row per conversation session. Groups ChatMessage rows and tracks which LLM provider and model were active at session creation time.


Table Info

PropertyValue
Table Namechatsession
SQLAlchemy Modelbackend/app/models/chat.py :: ChatSession
Pydantic SchemaInline in backend/app/api/v1/chat.py
MigrationSQLModel.metadata.create_all(engine) in backend/app/core/database.py :: init_db()
TimescaleDB HypertableNo

Columns

ColumnTypeNullableDefaultNotes
idUUIDNouuid.uuid4()Primary key
titleVARCHARNo"New Conversation"User-editable via PATCH /api/v1/chat/sessions/{id}
providerVARCHARNo"ollama"LLM provider active when session was created
model_nameVARCHARNo"minimax-m2:cloud"LLM model active when session was created
created_atTIMESTAMPNodatetime.utcnow()Set at Python layer, not DB server default
updated_atTIMESTAMPNodatetime.utcnow()Not auto-updated on row change — updated manually by service

Constraints & Indexes

TypeColumnsNotes
PRIMARY KEYidUUID v4
CASCADE DELETEvia ChatMessage.session_idDeleting a session deletes all its messages — defined on ChatMessage FK

Entity Relationships


SQLAlchemy Model (reference snapshot)

class ChatSession(SQLModel, table=True):
    id: uuid.UUID = Field(default_factory=uuid.uuid4, primary_key=True)
    title: str = Field(default="New Conversation")
    provider: str = Field(default="ollama")
    model_name: str = Field(default="minimax-m2:cloud")
    created_at: datetime = Field(default_factory=datetime.utcnow)
    updated_at: datetime = Field(default_factory=datetime.utcnow)
    messages: List["ChatMessage"] = Relationship(
        back_populates="session",
        sa_relationship_kwargs={"cascade": "all, delete-orphan"},
    )

Service Layer

OperationFileNotes
Create sessionbackend/app/api/v1/chat.pyPOST /chat/sessions
List sessionsbackend/app/api/v1/chat.pyGET /chat/sessions
Rename sessionbackend/app/api/v1/chat.pyPATCH /chat/sessions/{id} — updates title
Delete sessionbackend/app/api/v1/chat.pyDELETE /chat/sessions/{id} — cascades to messages
Fetch historybackend/app/services/chat_history_service.pyReturns session + ordered messages

RoleLink
Child tableDB - chatmessage
Chat APIbackend/app/api/v1/chat.py
DevOpsDevOps - DocRAG