60 lines
1.5 KiB
Python
60 lines
1.5 KiB
Python
# -*- coding = utf-8 -*-
|
|
# @Time : 2025/2/20 下午10:13
|
|
# @File : schema.py
|
|
# @Software : PyCharm
|
|
# @Author : xingc
|
|
# @Desc :
|
|
from datetime import date
|
|
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[str | 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[str | 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
|