""" Authentication schemas """ from typing import Optional from pydantic import BaseModel, EmailStr from pydantic.config import ConfigDict class UserBase(BaseModel): """Base user schema""" username: str email: EmailStr full_name: Optional[str] = None class UserCreate(UserBase): """User creation schema""" password: str class UserUpdate(BaseModel): """User update schema""" username: Optional[str] = None email: Optional[EmailStr] = None full_name: Optional[str] = None is_active: Optional[bool] = None class UserResponse(UserBase): """User response schema""" id: int is_active: bool is_admin: bool theme_preference: Optional[str] = "light" model_config = ConfigDict(from_attributes=True) class ThemePreferenceUpdate(BaseModel): """Theme preference update schema""" theme_preference: str class Token(BaseModel): """Token response schema""" access_token: str token_type: str refresh_token: Optional[str] = None class TokenData(BaseModel): """Token payload schema""" username: Optional[str] = None class LoginRequest(BaseModel): """Login request schema""" username: str password: str class RefreshRequest(BaseModel): """Refresh token submission""" refresh_token: str