Spaces:
Sleeping
Sleeping
File size: 1,171 Bytes
f2b5c2a | 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 30 31 32 33 34 35 36 37 | """
Conversation model for AI chatbot.
Represents a chat session between a user and the AI assistant.
"""
from sqlmodel import SQLModel, Field, Relationship
from datetime import datetime
from typing import Optional, List, TYPE_CHECKING
if TYPE_CHECKING:
from src.models.message import Message
from src.models.user import User
class Conversation(SQLModel, table=True):
"""
Conversation model representing a chat session.
Each user can have multiple conversations over time.
Currently, the system uses the most recent conversation for each user.
"""
__tablename__ = "conversations"
id: Optional[int] = Field(default=None, primary_key=True)
user_id: int = Field(foreign_key="users.id", index=True, nullable=False)
created_at: datetime = Field(default_factory=datetime.utcnow, nullable=False)
updated_at: datetime = Field(
default_factory=datetime.utcnow,
nullable=False,
sa_column_kwargs={"onupdate": datetime.utcnow}
)
# Relationships
messages: List["Message"] = Relationship(back_populates="conversation")
user: Optional["User"] = Relationship(back_populates="conversations")
|