Files
chat/backend/app/schemas/conversation.py
T
2026-06-12 23:14:12 +08:00

54 lines
1.3 KiB
Python

"""会话相关 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)