user.py 978 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  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. class UserResponse(UserBase):
  23. """Schema for user response."""
  24. id: int
  25. role: str
  26. status: str
  27. organization_id: int | None
  28. email_verified: bool
  29. last_login_at: datetime | None
  30. created_at: datetime
  31. class Config:
  32. from_attributes = True
  33. class UserListResponse(BaseModel):
  34. """Schema for list of users."""
  35. users: list[UserResponse]
  36. total: int