user.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 UserRewardRequest(BaseModel):
  11. tableNumber: int
  12. class PinUserRequest(BaseModel):
  13. pin: str = Field(min_length=4, max_length=4, description="4-digit PIN for user authentication")
  14. class User(BaseModel):
  15. """User model matching the database schema"""
  16. id: int
  17. email: str
  18. name: str
  19. rut: str
  20. pin_hash: str
  21. kleincoins: str
  22. created_at: str
  23. permissions: Optional[int] = 0 # Default to normal user
  24. reward_progress:int
  25. class UserMail(BaseModel):
  26. email: str
  27. class LoginRequest(BaseModel):
  28. email: str
  29. pin: str = Field(min_length=4, max_length=4, description="4-digit PIN for user authentication")
  30. class PinRecoveryRequest(BaseModel):
  31. email: str
  32. token: Optional[str] = None
  33. new_pin: Optional[str] = Field(min_length=4, max_length=4, description="4-digit PIN for user authentication")
  34. class PinRecoveryValidateRequest(BaseModel):
  35. email: str
  36. code: int