chats.pyโข1.62 kB
from datetime import datetime
from sqlalchemy import (
Column,
Integer,
String,
Text,
DateTime,
ForeignKey,
Boolean,
JSON,
)
from mcp_host.database.db import Base
from sqlalchemy.orm import relationship
class ChatSession(Base):
"""Chat session model representing a conversation."""
__tablename__ = "chat_sessions"
id = Column(Integer, primary_key=True, index=True)
chat_session_id = Column(String(100), unique=True, index=True, nullable=False)
user_id = Column(String(100), index=True, nullable=True)
title = Column(String(200), nullable=True)
is_active = Column(Boolean, default=True)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# Relationships
messages = relationship(
"ChatMessage", back_populates="session", cascade="all, delete-orphan"
)
class ChatMessage(Base):
"""Chat message model representing individual messages in a conversation."""
__tablename__ = "chat_messages"
id = Column(Integer, primary_key=True, index=True)
chat_session_id = Column(
String(100), ForeignKey("chat_sessions.chat_session_id"), nullable=False
)
role = Column(String(20), nullable=False)
content = Column(Text, nullable=False)
message_metadata = Column(JSON, nullable=True)
created_at = Column(DateTime, default=datetime.utcnow)
updated_at = Column(DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
# Relationships
session = relationship("ChatSession", back_populates="messages")