MedQA / models /chat.py
mgbam's picture
Update models/chat.py
40aac50 verified
raw
history blame
1.31 kB
from sqlmodel import SQLModel, Field, Relationship
from typing import Optional, List
from datetime import datetime
class ChatSessionBase(SQLModel):
user_id: int = Field(foreign_key="user.id")
start_time: datetime = Field(default_factory=datetime.utcnow)
title: Optional[str] = None # e.g., "Consultation on 2023-10-26"
class ChatSession(ChatSessionBase, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
user: Optional["User"] = Relationship(back_populates="chat_sessions") # Define in User model
messages: List["ChatMessage"] = Relationship(back_populates="session")
# Add to User model in user.py:
# chat_sessions: List["ChatSession"] = Relationship(back_populates="user")
class ChatMessageBase(SQLModel):
session_id: int = Field(foreign_key="chatsession.id")
role: str # "user", "assistant", "system", "tool"
content: str
timestamp: datetime = Field(default_factory=datetime.utcnow)
tool_call_id: Optional[str] = None # For tool messages
tool_name: Optional[str] = None # For tool messages
class ChatMessage(ChatMessageBase, table=True):
id: Optional[int] = Field(default=None, primary_key=True)
session: Optional[ChatSession] = Relationship(back_populates="messages")
class ChatMessageCreate(ChatMessageBase):
pass