"""会话相关 Schema""" from datetime import datetime from pydantic import BaseModel, Field class ConversationCreate(BaseModel): type: str = Field(..., pattern="^(private|group)$") name: str | None = Field(None, max_length=100) member_ids: list[str] = Field(..., min_length=1) class ConversationRead(BaseModel): id: str type: str name: str | None = None avatar_url: str | None = None description: str | None = None last_message_preview: str | None = None last_message_at: datetime | None = None created_at: datetime unread_count: int = 0 model_config = {"from_attributes": True} class ConversationDetail(ConversationRead): members: list["MemberRead"] = [] class MemberRead(BaseModel): id: str user_id: str username: str nickname: str | None = None avatar_url: str | None = None role: str = "member" joined_at: datetime model_config = {"from_attributes": True} class ConversationUpdate(BaseModel): name: str | None = Field(None, max_length=100) description: str | None = Field(None, max_length=500) avatar_url: str | None = None class GroupCreate(BaseModel): name: str = Field(..., min_length=1, max_length=100) description: str | None = Field(None, max_length=500) member_ids: list[str] = Field(..., min_length=1) class GroupUpdate(BaseModel): name: str | None = Field(None, max_length=100) description: str | None = Field(None, max_length=500) avatar_url: str | None = None class MemberAdd(BaseModel): user_ids: list[str] = Field(..., min_length=1) class RoleUpdate(BaseModel): role: str = Field(..., pattern="^(admin|member)$")