display-board / app /models.py
Almaatla's picture
Upload 2 files
68269b4 verified
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"]