Nanny7's picture
Phase 4: Infrastructure, Docker, Kubernetes, Chatbot with Qwen API
e566277
# Implements: T008
# Phase III - AI-Powered Todo Chatbot
# Message Model - Stores individual chat interactions
from typing import Optional
from datetime import datetime
from uuid import UUID, uuid4
from sqlmodel import SQLModel, Field, Column
from sqlalchemy import JSON
import enum
class MessageRole(str, enum.Enum):
"""Role of the message sender"""
USER = "user"
ASSISTANT = "assistant"
TOOL = "tool"
class Message(SQLModel, table=True):
"""
Represents a single interaction within a conversation.
Attributes:
id: Unique identifier for the message
conversation_id: Conversation this message belongs to
role: Role of the message sender (user/assistant/tool)
content: Message content (user input or AI response)
created_at: When the message was created
tool_calls: Optional array of MCP tool calls made by the AI
"""
__tablename__ = "message"
id: UUID = Field(default_factory=uuid4, primary_key=True)
conversation_id: UUID = Field(foreign_key="conversation.id", index=True)
role: MessageRole = Field(default=MessageRole.USER)
content: str
created_at: datetime = Field(default_factory=datetime.utcnow, index=True)
tool_calls: Optional[dict] = Field(default=None, sa_column=Column(JSON))
# Relationships (if needed in future)
# conversation: Optional["Conversation"] = Relationship(back_populates="messages")