"""User request / response schemas.""" from __future__ import annotations from datetime import datetime from typing import Optional from pydantic import BaseModel, EmailStr, Field class UserBase(BaseModel): email: EmailStr name: str = Field(..., min_length=1, max_length=255) role: str = Field(default="visitor") class UserCreate(UserBase): password: str = Field(..., min_length=8, max_length=128) class UserUpdate(BaseModel): name: Optional[str] = Field(None, min_length=1, max_length=255) email: Optional[EmailStr] = None phone: Optional[str] = Field(None, max_length=20) avatar_url: Optional[str] = None class UserResponse(BaseModel): id: str email: str name: str role: str verified: bool phone: Optional[str] = None avatar_url: Optional[str] = None created_at: datetime updated_at: Optional[datetime] = None model_config = {"from_attributes": True} class UserListResponse(BaseModel): users: list[UserResponse] total: int page: int page_size: int