user.py 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. """
  2. Pydantic schemas for User model.
  3. """
  4. from datetime import datetime
  5. from pydantic import BaseModel, EmailStr
  6. class UserBase(BaseModel):
  7. """Base user schema."""
  8. email: EmailStr
  9. full_name: str | None = None
  10. phone: str | None = None
  11. class UserCreate(UserBase):
  12. """Schema for creating a user."""
  13. password: str
  14. role: str = "viewer"
  15. organization_id: int
  16. class UserUpdate(BaseModel):
  17. """Schema for updating a user."""
  18. full_name: str | None = None
  19. phone: str | None = None
  20. role: str | None = None
  21. status: str | None = None
  22. notes: str | None = None
  23. class UserResponse(UserBase):
  24. """Schema for user response."""
  25. id: int
  26. role: str
  27. status: str
  28. organization_id: int | None
  29. email_verified: bool
  30. last_login_at: datetime | None
  31. created_at: datetime
  32. notes: str | None = None
  33. class Config:
  34. from_attributes = True
  35. class UserListResponse(BaseModel):
  36. """Schema for list of users."""
  37. users: list[UserResponse]
  38. total: int