"""Script pour créer un utilisateur de test."""
import sys
sys.path.insert(0, 'backend')

from sqlalchemy.orm import Session
from app.database import SessionLocal
from app.models.user import User
from passlib.context import CryptContext
import secrets
import string

# Configuration du hashage de mot de passe
pwd_context = CryptContext(schemes=["bcrypt"], deprecated="auto")

db = SessionLocal()

try:
    # Générer un code de parrainage unique
    referral_code = ''.join(secrets.choice(string.ascii_uppercase + string.digits) for _ in range(8))

    # Créer un utilisateur de test
    test_user = User(
        email="test@example.com",
        name="Utilisateur Test",
        password_hash=pwd_context.hash("password123"),
        is_premium=False,
        referral_code=referral_code
    )

    db.add(test_user)
    db.commit()
    db.refresh(test_user)

    print("=== Utilisateur créé avec succès ===")
    print(f"ID: {test_user.id}")
    print(f"Email: {test_user.email}")
    print(f"Nom: {test_user.name}")
    print(f"Mot de passe: password123")
    print(f"Code de parrainage: {test_user.referral_code}")
    print(f"Premium: {'Oui' if test_user.is_premium else 'Non'}")
    print(f"Créé le: {test_user.created_at}")

except Exception as e:
    print(f"Erreur lors de la création de l'utilisateur: {e}")
    db.rollback()
finally:
    db.close()
