from pydantic import BaseModel, EmailStr, Field class UserCreate(BaseModel): email: EmailStr full_name: str = Field(min_length=2, max_length=255) password: str = Field(min_length=10, max_length=255) role: str = Field(default="reader", pattern="^(admin|editor|reader)$") class ProfileUpdate(BaseModel): email: EmailStr full_name: str = Field(min_length=2, max_length=255) class PasswordChange(BaseModel): new_password: str = Field(min_length=10, max_length=255) class UserOut(BaseModel): id: int email: EmailStr full_name: str role: str is_active: bool class Config: from_attributes = True