mgbam commited on
Commit
40aac50
·
verified ·
1 Parent(s): afc35b3

Update models/chat.py

Browse files
Files changed (1) hide show
  1. models/chat.py +34 -0
models/chat.py CHANGED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from sqlmodel import SQLModel, Field, Relationship
2
+ from typing import Optional, List
3
+ from datetime import datetime
4
+
5
+ class ChatSessionBase(SQLModel):
6
+ user_id: int = Field(foreign_key="user.id")
7
+ start_time: datetime = Field(default_factory=datetime.utcnow)
8
+ title: Optional[str] = None # e.g., "Consultation on 2023-10-26"
9
+
10
+ class ChatSession(ChatSessionBase, table=True):
11
+ id: Optional[int] = Field(default=None, primary_key=True)
12
+
13
+ user: Optional["User"] = Relationship(back_populates="chat_sessions") # Define in User model
14
+ messages: List["ChatMessage"] = Relationship(back_populates="session")
15
+
16
+ # Add to User model in user.py:
17
+ # chat_sessions: List["ChatSession"] = Relationship(back_populates="user")
18
+
19
+
20
+ class ChatMessageBase(SQLModel):
21
+ session_id: int = Field(foreign_key="chatsession.id")
22
+ role: str # "user", "assistant", "system", "tool"
23
+ content: str
24
+ timestamp: datetime = Field(default_factory=datetime.utcnow)
25
+ tool_call_id: Optional[str] = None # For tool messages
26
+ tool_name: Optional[str] = None # For tool messages
27
+
28
+
29
+ class ChatMessage(ChatMessageBase, table=True):
30
+ id: Optional[int] = Field(default=None, primary_key=True)
31
+ session: Optional[ChatSession] = Relationship(back_populates="messages")
32
+
33
+ class ChatMessageCreate(ChatMessageBase):
34
+ pass