"""Schémas Pydantic pour les utilisateurs.""" from pydantic import BaseModel, EmailStr, Field from typing import Optional from datetime import datetime class UserBase(BaseModel): """Schéma de base pour un utilisateur.""" email: EmailStr name: str = Field(..., min_length=1, max_length=100) class UserCreate(UserBase): """Schéma pour la création d'un utilisateur.""" password: str = Field(..., min_length=8, max_length=100) referral_code: Optional[str] = Field(None, description="Code de parrainage (optionnel)") class UserUpdate(BaseModel): """Schéma pour la mise à jour d'un utilisateur.""" name: Optional[str] = Field(None, min_length=1, max_length=100) is_premium: Optional[bool] = Field(None, description="Statut Premium") class UserResponse(BaseModel): """Schéma pour la réponse d'un utilisateur.""" id: int email: EmailStr name: str is_premium: bool = False referral_code: Optional[str] = None created_at: datetime updated_at: datetime class Config: from_attributes = True class UserLoginRequest(BaseModel): """Schéma pour la connexion d'un utilisateur.""" email: EmailStr password: str