user.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import email
  2. from typing import Optional
  3. from pydantic import BaseModel, Field
  4. class UserIDRequest(BaseModel):
  5. id: int
  6. class RegisterUserRequest(BaseModel):
  7. name: str
  8. email: str
  9. rut: str
  10. class ForceRegisterUserRequest(BaseModel):
  11. name: str
  12. email: str
  13. rut: str
  14. pin: str = Field(min_length=4, max_length=4, description="4-digit PIN for user authentication")
  15. class UserRewardRequest(BaseModel):
  16. tableNumber: int
  17. class PinUserRequest(BaseModel):
  18. pin: str = Field(min_length=4, max_length=4, description="4-digit PIN for user authentication")
  19. class User(BaseModel):
  20. """User model matching the database schema"""
  21. id: int
  22. email: str
  23. name: str
  24. rut: str
  25. pin_hash: str
  26. kleincoins: str
  27. created_at: str
  28. permissions: Optional[int] = 0 # Default to normal user
  29. reward_progress:int
  30. class UserMail(BaseModel):
  31. email: str
  32. class LoginRequest(BaseModel):
  33. email: str
  34. pin: str = Field(min_length=4, max_length=4, description="4-digit PIN for user authentication")
  35. class PinRecoveryRequest(BaseModel):
  36. email: str
  37. token: Optional[str] = None
  38. new_pin: Optional[str] = Field(min_length=4, max_length=4, description="4-digit PIN for user authentication")
  39. class PinRecoveryValidateRequest(BaseModel):
  40. email: str
  41. code: int