"""SQLAlchemy database models for conversations.""" from sqlalchemy import Column, String, Integer, Text, ForeignKey, JSON from sqlalchemy.orm import relationship from app.database import Base import uuid class DBConversation(Base): """Database model for conversations.""" __tablename__ = "conversations" id = Column(String, primary_key=True, default=lambda: str(uuid.uuid4())) title = Column(String, default="New Chat") created_at = Column(String, nullable=False) updated_at = Column(String, nullable=False) # Relationship to messages messages = relationship( "DBMessage", back_populates="conversation", cascade="all, delete-orphan", order_by="DBMessage.id" ) class DBMessage(Base): """Database model for conversation messages.""" __tablename__ = "messages" id = Column(Integer, primary_key=True, autoincrement=True) conversation_id = Column(String, ForeignKey("conversations.id"), nullable=False) role = Column(String, nullable=False) # 'user' or 'assistant' content = Column(Text, nullable=False) timestamp = Column(String, nullable=False) sources = Column(JSON, default=list) # Stored as JSON array # Relationship to conversation conversation = relationship("DBConversation", back_populates="messages")