from pydantic import BaseModel from typing import Optional # --- Users --- class UserBase(BaseModel): username: str role: str = "user" origin: str = "local" class UserCreate(UserBase): password: Optional[str] = None class User(UserBase): id: int class Config: from_attributes = True class UserUpdate(BaseModel): username: Optional[str] = None password: Optional[str] = None role: Optional[str] = None class UserLogin(BaseModel): username: str password: str class UserPasswordUpdate(BaseModel): old_password: Optional[str] = None new_password: str class TokenResponse(BaseModel): access_token: str token_type: str = "bearer" user_id: int username: str role: str user: User # User object for frontend compatibility # Rebuild TokenResponse to resolve forward references TokenResponse.model_rebuild()