Spaces:
Sleeping
Sleeping
File size: 1,110 Bytes
6a3de9e |
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 35 36 37 38 39 |
from sqlmodel import SQLModel, Field
from typing import Optional, Dict, Any
from datetime import datetime
from uuid import UUID, uuid4
from enum import Enum
from sqlalchemy.types import JSON
class MessageRoleEnum(str, Enum):
user = "user"
assistant = "assistant"
class MessageBase(SQLModel):
conversation_id: UUID = Field(nullable=False, foreign_key="conversation.id")
role: MessageRoleEnum = Field(nullable=False)
content: str = Field(nullable=False, max_length=10000)
metadata_: Optional[Dict[str, Any]] = Field(default=None, sa_type=JSON)
class Message(MessageBase, table=True):
"""
Represents a single message in a conversation, either from user or assistant.
"""
id: Optional[UUID] = Field(default_factory=uuid4, primary_key=True)
timestamp: datetime = Field(default_factory=datetime.utcnow)
class MessageCreate(MessageBase):
"""Schema for creating a new message."""
conversation_id: UUID
role: MessageRoleEnum
content: str
class MessageRead(MessageBase):
"""Schema for reading message data."""
id: UUID
timestamp: datetime |