from pydantic import BaseModel, Field
from typing import Literal, Optional, Dict, Any
from datetime import datetime
import uuid

class UserMessagePayloadSchema(BaseModel):
    content: str
    token: str

class MessageSchema(BaseModel):
    message_id: str = Field(default_factory=lambda: str(uuid.uuid4()))
    chat_id: str  # chat_uuid from the path, for context if needed
    role: Literal['user', 'assistant', 'system', 'tool', 'tool_result']
    content: str
    status: Literal['complete', 'error', 'pending', 'suno_response']
    timestamp: datetime = Field(default_factory=datetime.utcnow)
    metadata: Optional[Dict[str, Any]] = None 