user.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. """
  2. 用户相关Schema
  3. """
  4. from pydantic import BaseModel, EmailStr, validator
  5. from typing import Optional, Dict
  6. from datetime import datetime
  7. class UserBase(BaseModel):
  8. """用户基础Schema"""
  9. username: str
  10. email: EmailStr
  11. class UserCreate(UserBase):
  12. """用户创建Schema"""
  13. password: str
  14. @validator("password")
  15. def validate_password(cls, v):
  16. if len(v) < 6:
  17. raise ValueError("密码长度至少6位")
  18. return v
  19. class UserLogin(BaseModel):
  20. """用户登录Schema"""
  21. username: str
  22. password: str
  23. class UserResponse(UserBase):
  24. """用户响应Schema"""
  25. id: int
  26. avatar_url: Optional[str] = None
  27. timezone: str
  28. preferred_language: str
  29. is_active: bool
  30. created_at: datetime
  31. class Config:
  32. from_attributes = True
  33. class TokenResponse(BaseModel):
  34. """令牌响应Schema"""
  35. access_token: str
  36. refresh_token: str
  37. token_type: str = "bearer"
  38. class APIKeyCreate(BaseModel):
  39. """API Key创建Schema"""
  40. provider: str # openai | claude | qwen | ernie
  41. api_key: str
  42. model: Optional[str] = None
  43. class APIKeyResponse(BaseModel):
  44. """API Key响应Schema"""
  45. provider: str
  46. model: Optional[str]
  47. status: str = "active"