import uuid from datetime import datetime from pydantic import BaseModel, EmailStr, Field class RegisterRequest(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 = Field(default=None, max_length=255) class LoginRequest(BaseModel): email: EmailStr password: str remember_me: bool = False class RefreshRequest(BaseModel): refresh_token: str class UserResponse(BaseModel): id: uuid.UUID email: str username: str full_name: str | None role: str is_active: bool created_at: datetime model_config = {"from_attributes": True} class AuthResponse(BaseModel): user: UserResponse access_token: str refresh_token: str token_type: str = "bearer" class TokenResponse(BaseModel): access_token: str refresh_token: str token_type: str = "bearer"