from datetime import datetime from typing import Optional from pydantic import BaseModel, ConfigDict, Field, EmailStr class UserBase(BaseModel): email: EmailStr name: str = Field(..., min_length=1, max_length=100) class UserCreate(UserBase): password: str = Field(..., min_length=8, max_length=100) class UserLogin(BaseModel): email: EmailStr password: str class UserResponse(UserBase): model_config = ConfigDict(from_attributes=True) id: str created_at: datetime class TokenResponse(BaseModel): access_token: str refresh_token: str token_type: str = "bearer" class TokenRefresh(BaseModel): refresh_token: str class TokenData(BaseModel): user_id: Optional[str] = None email: Optional[str] = None