Spaces:
Sleeping
Sleeping
| from pydantic import BaseModel, Field | |
| from datetime import datetime | |
| from typing import Optional, Dict, Any, List, Literal | |
| class PostRequest(BaseModel): | |
| poster_id: str = Field(..., min_length=1) | |
| content: str = Field(..., min_length=1, max_length=1000) | |
| category: Optional[str] = None | |
| metadata: Optional[Dict[str, Any]] = None | |
| class Message(BaseModel): | |
| id: str | |
| poster_id: str | |
| content: str | |
| timestamp: datetime | |
| category: Optional[str] = None | |
| metadata: Dict[str, Any] = {} | |
| # File-related fields | |
| message_type: Literal["text", "png", "md", "txt"] = "text" | |
| file_url: Optional[str] = None | |
| title: Optional[str] = None | |
| file_content: Optional[str] = None # For MD/TXT - stored but not shown in list | |
| class HistoryPayload(BaseModel): | |
| type: str = "history" | |
| messages: List[Message] | |
| class NewPostPayload(BaseModel): | |
| type: str = "new_post" | |
| message: Message | |
| class ErrorPayload(BaseModel): | |
| type: str = "error" | |
| error: str | |
| class FileContentPayload(BaseModel): | |
| type: str = "file_content" | |
| message_id: str | |
| content: str | |
| content_type: Literal["md", "txt"] | |