"""Conversation model.""" from datetime import datetime from typing import Optional from sqlalchemy.orm import Mapped, mapped_column from sqlalchemy import String, Integer, Text, Boolean, DateTime from ..db.base import BaseModel class Conversation(BaseModel): """Conversation model.""" __tablename__ = "conversations" title: Mapped[str] = mapped_column(String(200), nullable=False) user_id: Mapped[int] = mapped_column(Integer, nullable=False) # Removed ForeignKey("users.id") knowledge_base_id: Mapped[Optional[int]] = mapped_column(Integer, nullable=True) # Removed ForeignKey("knowledge_bases.id") system_prompt: Mapped[Optional[str]] = mapped_column(Text, nullable=True) model_name: Mapped[str] = mapped_column(String(100), nullable=False, default="gpt-3.5-turbo") temperature: Mapped[str] = mapped_column(String(10), nullable=False, default="0.7") max_tokens: Mapped[int] = mapped_column(Integer, nullable=False, default=2048) is_archived: Mapped[bool] = mapped_column(Boolean, default=False, nullable=False) message_count: Mapped[int] = mapped_column(Integer, default=0, nullable=False) last_message_at: Mapped[Optional[datetime]] = mapped_column(nullable=True) # Relationships removed to eliminate foreign key constraints def to_dict(self) -> dict: """Convert conversation to a dictionary.""" return { "id": self.id, "title": self.title, "user_id": self.user_id, "knowledge_base_id": self.knowledge_base_id, "system_prompt": self.system_prompt, "model_name": self.model_name, "temperature": self.temperature, "max_tokens": self.max_tokens, "is_archived": self.is_archived, "message_count": self.message_count, "last_message_at": self.last_message_at, } def __repr__(self): return f""