from sqlalchemy import Column, Integer, String, Text, ForeignKey, DateTime, Enum from sqlalchemy.orm import relationship from sqlalchemy.sql import func from datetime import datetime import enum from app.db.database import Base class MessageCreator(str, enum.Enum): """Enum for message creator""" USER = "USER" ASSISTANT = "ASSISTANT" class Message(Base): """Message model""" __tablename__ = "messages" message_id = Column(Integer, primary_key=True, index=True, autoincrement=True) chat_id = Column(Integer, ForeignKey("chats.chat_id", ondelete="CASCADE"), nullable=False, index=True) created_by = Column(Enum(MessageCreator), nullable=False) text = Column(Text, nullable=True) file_paths = Column(Text, nullable=True) # Store as JSON string created_at = Column(DateTime, nullable=False, default=func.now(), index=True) # Relationship chat = relationship("Chat", back_populates="messages") def __repr__(self): return f""