# -*- coding = utf-8 -*- # @Time : 2025/2/20 下午10:13 # @File : schema.py # @Software : PyCharm # @Author : xingc # @Desc : from datetime import date, datetime from typing import Optional from pydantic import constr from core.base.schema import BaseMixin class User(BaseMixin): nickname: str user_id: int gender: Optional[int] = None avatar_url: Optional[str] = None wechat_openid: Optional[str] = None wechat_union_id: Optional[str] = None phone: Optional[str] = None vip_expire_date: Optional[date] = None points: Optional[int] = 0 displayed_card_total: Optional[int] = 0 description: Optional[str | None] = None last_active_at: Optional[datetime | None] = None fans_count: Optional[int] = 0 followers_count: Optional[int] = 0 class LiteUser(BaseMixin): nickname: str user_id: int gender: Optional[int] = None avatar_url: Optional[str] = None vip_expire_date: Optional[date] = None class VisitUser(LiteUser): is_follow: Optional[bool] = False displayed_card_total: Optional[int] = 0 description: Optional[str | None] = None last_active_at: Optional[datetime | None] = None fans_count: Optional[int] = 0 class UserFollows(BaseMixin): nickname: str user_id: int gender: Optional[int] = None avatar_url: Optional[int] = None class UpdateUserIn(BaseMixin): nickname: Optional[constr(max_length=20)] = None gender: Optional[int] = None avatar_url: Optional[constr(pattern='^http[a-zA-Z0-9:/\.]+')] = None description: Optional[constr(max_length=200) | None] = None