"""Pydantic schemas for authentication endpoints."""

# Import uuid
import uuid

# Import BaseModel from pydantic
from pydantic import BaseModel


# Define class LoginRequest
class LoginRequest(BaseModel):
    """Body for the login endpoint.

    Unused directly — we rely on ``OAuth2PasswordRequestForm``, but kept for
    documentation and testing purposes.
    """

    # username: str
    username: str
    # password: str
    password: str


# Define class TokenResponse
class TokenResponse(BaseModel):
    """Response returned after a successful login."""

    # access_token: str
    access_token: str
    # Assign token_type = "bearer"
    token_type: str = "bearer"


# Define class UserOut
class UserOut(BaseModel):
    """Public representation of a user (no password hash)."""

    # id: uuid.UUID
    id: uuid.UUID
    # username: str
    username: str
    # Assign email = None
    email: str | None = None
    # role: str
    role: str
    # is_active: bool
    is_active: bool
    # Assign must_change_password = True
    must_change_password: bool = True

    # Define class Config
    class Config:
        """ORM mode configuration for SQLAlchemy model mapping."""

        # Assign from_attributes = True
        from_attributes = True
