from datetime import datetime from pydantic import BaseModel, EmailStr, field_validator class UserOut(BaseModel): id: int email: EmailStr first_name: str | None = None last_name: str | None = None role: str created_at: datetime model_config = {"from_attributes": True} class UserCreate(BaseModel): email: EmailStr first_name: str | None = None last_name: str | None = None password: str role: str = "viewer" class UserUpdate(BaseModel): email: EmailStr | None = None first_name: str | None = None last_name: str | None = None password: str | None = None role: str | None = None class UserPasswordChange(BaseModel): current_password: str new_password: str @field_validator("new_password") @classmethod def validate_new_password(cls, value: str) -> str: if len(value) < 8: raise ValueError("new_password must be at least 8 characters") return value