using Webzine.EntitiesContext;
using Webzine.Entity;
using Bogus;
using System;
using System.Collections.Generic;
using System.Linq;
namespace Webzine.Repository
{
///
/// Classe de service pour peupler la base de données avec des données fictives (mock data) à des fins de développement et de test.
///
public class SeedMockData
{
private readonly WebzineDbContext _context;
private readonly Random _random;
///
/// Constructeur pour l'utilisation avec base de données
///
public SeedMockData(WebzineDbContext context)
{
_context = context;
_random = new Random();
}
///
/// Constructeur pour l'utilisation en mémoire (sans base de données)
///
public SeedMockData()
{
_random = new Random();
}
///
/// Peuple la base de données avec des données fictives
///
public void SeedDB()
{
// Vérifie si la base contient déjà des données
if (_context.Artistes.Any()) return;
// Génère toutes les données
var styles = GenererStyles(18);
var artistes = GenererArtistes(100);
var titres = GenererTitres(artistes, 500, 550);
var commentaires = GenererCommentaires(titres, 0, 5);
// Associe les styles aux titres
AssocierStylesAuxTitres(titres, styles);
// Sauvegarde dans la base
_context.SaveChanges();
}
///
/// Génère des données fictives en mémoire sans base de données
///
/// Tuple contenant toutes les données générées
public (List