from datetime import datetime from pydantic import BaseModel, EmailStr, Field, field_validator class Token(BaseModel): access_token: str token_type: str = "bearer" class LoginRequest(BaseModel): email: EmailStr password: str = Field(min_length=8, max_length=128) @field_validator("email") @classmethod def normalize_email(cls, value: str) -> str: return value.strip().lower() class RegisterRequest(BaseModel): email: EmailStr password: str = Field(min_length=8, max_length=128) full_name: str | None = Field(default=None, max_length=120) @field_validator("email") @classmethod def normalize_email(cls, value: str) -> str: return value.strip().lower() @field_validator("full_name") @classmethod def strip_name(cls, value: str | None) -> str | None: if value is None: return None stripped = value.strip() return stripped or None class UserPublic(BaseModel): id: int email: EmailStr full_name: str | None is_active: bool created_at: datetime model_config = {"from_attributes": True}