Spaces:
Sleeping
Sleeping
File size: 1,061 Bytes
e103642 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | from datetime import datetime
from typing import TYPE_CHECKING, Optional
from uuid import UUID, uuid4
from enum import Enum
from sqlmodel import Field, SQLModel, Relationship
if TYPE_CHECKING:
from .conversation import Conversation
class MessageRole(str, Enum):
"""Enum for message sender roles."""
USER = "user"
ASSISTANT = "assistant"
SYSTEM = "system"
class MessageBase(SQLModel):
"""Base model for Message with common fields."""
role: str = Field(max_length=20, nullable=False)
content: str = Field(nullable=False)
class Message(MessageBase, table=True):
"""Message model for conversation messages."""
id: UUID = Field(default_factory=uuid4, primary_key=True)
conversation_id: int = Field(foreign_key="conversation.id", index=True, nullable=False)
user_id: UUID = Field(nullable=False)
created_at: datetime = Field(default_factory=datetime.utcnow, nullable=False, index=True)
# Relationship to conversation
conversation: Optional["Conversation"] = Relationship(back_populates="messages")
|