import uuid from datetime import datetime from typing import Literal from pydantic import BaseModel, EmailStr, Field class AdminUserResponse(BaseModel): id: uuid.UUID email: str username: str full_name: str | None role: str is_active: bool max_chats: int created_at: datetime model_config = {"from_attributes": True} class AdminUserCreateRequest(BaseModel): email: EmailStr username: str = Field(min_length=3, max_length=50, pattern=r"^[a-zA-Z0-9_-]+$") password: str = Field(min_length=8, max_length=128) full_name: str | None = None role: Literal["user", "admin"] = "user" max_chats: int = 10 class AdminUserUpdateRequest(BaseModel): role: Literal["user", "admin"] | None = None is_active: bool | None = None max_chats: int | None = None full_name: str | None = None class AdminUserListResponse(BaseModel): users: list[AdminUserResponse] total: int