"""
Pydantic schemas for authentication.
"""

from typing import Optional
from pydantic import BaseModel, EmailStr, Field


class LoginRequest(BaseModel):
    """Schema pour la requête de connexion"""
    email: EmailStr = Field(..., description="Email de l'utilisateur")
    password: str = Field(..., min_length=1, description="Mot de passe de l'utilisateur")


class RegisterRequest(BaseModel):
    """Schema pour la requête d'inscription"""
    email: EmailStr = Field(..., description="Email de l'utilisateur")
    password: str = Field(..., min_length=8, description="Mot de passe (min 8 caractères)")
    name: Optional[str] = Field(None, description="Nom de l'utilisateur (optionnel)")
    referral_code: Optional[str] = Field(None, description="Code de parrainage (optionnel)")


class AuthResponse(BaseModel):
    """Schema pour la réponse d'authentification"""
    data: dict
    meta: dict

    class Config:
        from_attributes = True


class ErrorResponse(BaseModel):
    """Schema pour les réponses d'erreur"""
    error: dict

    class Config:
        from_attributes = True
