44 lines
1.0 KiB
Python
44 lines
1.0 KiB
Python
"""消息相关 Schema"""
|
|
|
|
from datetime import datetime
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class MessageSend(BaseModel):
|
|
conversation_id: str
|
|
content: str = Field(..., min_length=1, max_length=5000)
|
|
type: str = Field(default="text", pattern="^(text|image|file|voice)$")
|
|
reply_to_id: str | None = None
|
|
mentioned_user_ids: list[str] | None = None
|
|
|
|
|
|
class MessageRead(BaseModel):
|
|
id: str
|
|
conversation_id: str
|
|
sender_id: str
|
|
sender_name: str | None = None
|
|
sender_avatar: str | None = None
|
|
type: str
|
|
content: str
|
|
reply_to_id: str | None = None
|
|
reply_to_content: str | None = None
|
|
reply_to_sender_name: str | None = None
|
|
mentions: list[str] | None = None
|
|
is_deleted: bool = False
|
|
is_recalled: bool = False
|
|
reactions: list[dict] = []
|
|
created_at: datetime
|
|
|
|
model_config = {"from_attributes": True}
|
|
|
|
|
|
class MessagePage(BaseModel):
|
|
messages: list[MessageRead]
|
|
has_more: bool = False
|
|
next_cursor: str | None = None
|
|
|
|
|
|
class MarkReadRequest(BaseModel):
|
|
message_id: str
|