user.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. from typing import Optional
  2. from pydantic import BaseModel, EmailStr
  3. from datetime import datetime
  4. from typing import List
  5. class UserBase(BaseModel):
  6. mobile: str
  7. status: str = "PENDING"
  8. role: str = "DEVELOPER"
  9. is_deleted: int = 0
  10. class UserCreate(UserBase):
  11. password: str
  12. class UserRegister(BaseModel):
  13. mobile: str
  14. password: str
  15. sms_code: str # Added field
  16. class PromoteUserRequest(BaseModel):
  17. password: str
  18. captcha_id: str
  19. captcha_code: str
  20. class UserUpdate(BaseModel):
  21. password: Optional[str] = None
  22. status: Optional[str] = None
  23. role: Optional[str] = None
  24. is_deleted: Optional[int] = None
  25. class UserSyncRequest(BaseModel):
  26. mobile: str
  27. password: Optional[str] = None
  28. status: Optional[str] = None
  29. mapped_key: Optional[str] = None # External User ID
  30. mapped_email: Optional[str] = None # External User Email
  31. is_active: Optional[bool] = None # True=Active, False=Disabled. None=No Change
  32. class UserInDBBase(UserBase):
  33. id: int
  34. created_at: datetime
  35. updated_at: datetime
  36. class Config:
  37. from_attributes = True
  38. class User(UserInDBBase):
  39. pass
  40. class UserInDB(UserInDBBase):
  41. password_hash: str
  42. class UserList(BaseModel):
  43. total: int
  44. items: List[User]