""" 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")