Files
ai_web/backend/apps/users/schemas.py
ddrwode fc0679b199 haha
2026-02-02 13:48:11 +08:00

96 lines
2.0 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Pydantic schemas for user API.
"""
from typing import Optional
from datetime import datetime
from ninja import Schema
class UserOut(Schema):
"""Public user output schema."""
id: int
open_id: str
user_id: Optional[str] = None # 可分享的用户ID用于好友/商品搜索
name: Optional[str] = None
email: Optional[str] = None
avatar: Optional[str] = None
role: str
created_at: datetime
updated_at: datetime
class UserPrivateOut(UserOut):
"""Private user output schema (includes sensitive fields)."""
stripe_customer_id: Optional[str] = None
stripe_account_id: Optional[str] = None
class UserBrief(Schema):
"""Minimal user info for social features."""
id: int
open_id: str
user_id: Optional[str] = None # 可分享的用户ID
name: Optional[str] = None
email: Optional[str] = None
avatar: Optional[str] = None
class UserUpdate(Schema):
"""User update schema."""
name: Optional[str] = None
email: Optional[str] = None
avatar: Optional[str] = None
class TokenOut(Schema):
"""JWT token output schema."""
access_token: str
refresh_token: str
token_type: str = "Bearer"
class OAuthCallbackIn(Schema):
"""OAuth callback input schema."""
code: str
state: Optional[str] = None
class RegisterIn(Schema):
"""Register input schema."""
open_id: str
password: str
name: Optional[str] = None
email: Optional[str] = None
class LoginIn(Schema):
"""Login input schema."""
open_id: str
password: str
class MessageOut(Schema):
"""Simple message response."""
message: str
success: bool = True
class FriendRequestIn(Schema):
receiver_id: int
class FriendRequestOut(Schema):
id: int
requester: UserBrief
receiver: UserBrief
status: str
accepted_at: Optional[datetime] = None
created_at: datetime
updated_at: datetime
class FriendOut(Schema):
request_id: int
user: UserBrief
since: Optional[datetime] = None