diff --git a/Webzine.Repository/SeedMockData.cs b/Webzine.Repository/SeedMockData.cs new file mode 100644 index 0000000..5d1dfc6 --- /dev/null +++ b/Webzine.Repository/SeedMockData.cs @@ -0,0 +1,462 @@ +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