package dev.lions.services;

import jakarta.enterprise.context.ApplicationScoped;
import java.io.InputStream;
import java.nio.file.Path;
import org.jboss.logging.Logger;

/**
 * Implémentation du service de stockage de fichiers.
 * Cette classe fournit des méthodes pour stocker des fichiers de manière basique.
 *
 * <p>Elle est annotée avec {@link ApplicationScoped}, ce qui signifie que
 * Quarkus gère son cycle de vie et garantit qu'une seule instance est créée
 * pour toute l'application.</p>
 */
@ApplicationScoped
public class FileStorageServiceImpl implements FileStorageService {

  // Logger pour suivre les actions effectuées
  private static final Logger LOG = Logger.getLogger(FileStorageServiceImpl.class);

  /**
   * Méthode pour stocker un fichier.
   *
   * @param fileName Nom du fichier à stocker.
   */
  @Override
  public void storeFile(String fileName) {
    // Log d'entrée pour la méthode
    LOG.info("Début du stockage du fichier : " + fileName);

    try {
      // Simulation d'un stockage de fichier
      System.out.println("Fichier stocké avec succès : " + fileName);

      // Log de succès
      LOG.info("Le fichier a été stocké avec succès.");
    } catch (Exception e) {
      // Gestion des erreurs avec log
      LOG.error("Erreur lors du stockage du fichier : " + fileName, e);
    }

    // Log de sortie pour la méthode
    LOG.debug("Fin du traitement de la méthode storeFile.");
  }

  @Override
  public Path storeFile(InputStream fileStream, String directory, String fileName) {
    return null;
  }

  @Override
  public String createTempDirectory(String prefix) {
    return "";
  }

  @Override
  public void deleteFile(Path filePath) {

  }

  @Override
  public void deleteDirectory(String directoryPath) {

  }
}
