from pydantic import BaseModel from typing import Optional # 【新增】:发送验证码的请求模型 class SendCodeRequest(BaseModel): contact: str contact_type: str # "email" 或 "phone" action_type: str # "register" 或 "reset" account: Optional[str] = None # 【新增】:仅重置密码时需要传,用于校验身份 class UserRegister(BaseModel): account: str password: str email: str phone: str name: str gender: str code: str # 【新增】:注册验证码 avatarDataUrl: Optional[str] = None age: Optional[int] = None country: Optional[str] = None region: Optional[str] = None intro: Optional[str] = None class UserLogin(BaseModel): account: str password: str class UserUpdate(BaseModel): name: Optional[str] = None intro: Optional[str] = None age: Optional[int] = None country: Optional[str] = None region: Optional[str] = None gender: Optional[str] = None avatarDataUrl: Optional[str] = None class PasswordReset(BaseModel): old_password: Optional[str] = None # 找回密码时此项可为空 new_password: str verify_contact: str # 【新增】:接收验证码的邮箱或手机号 verify_type: str # 【新增】:"email" 或 "phone" code: str # 【新增】:重置验证码 class InteractionToggle(BaseModel): item_id: str user_id: str action_type: str is_active: bool class CommentCreate(BaseModel): item_id: str author: str content: str reply_to_user: Optional[str] = None parent_id: Optional[str] = None class ItemCreate(BaseModel): type: str title: str shortDesc: str fullDesc: str link: str coverUrl: Optional[str] = None author: str price: float = 0.0 class FollowToggle(BaseModel): user_id: str target_account: str is_active: bool class PrivateMessage(BaseModel): sender: str receiver: str content: str class PrivacySettings(BaseModel): follows: bool likes: bool favorites: bool downloads: bool class ItemUpdate(BaseModel): title: Optional[str] = None shortDesc: Optional[str] = None fullDesc: Optional[str] = None link: Optional[str] = None coverUrl: Optional[str] = None price: Optional[float] = None