# Récapitulatif des modifications pour le seeder Spotify ## Objectif Ajout d’un seeder capable de récupérer de vraies données depuis l’API Spotify pour alimenter l’application avec : - des artistes - des styles - des titres - des commentaires générés localement autour de ces vraies données ## 1. Nouveau seeder Spotify ### Fichier ajouté [Webzine.Entity/Fixtures/SeedDataSpotify.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Fixtures\SeedDataSpotify.cs) ### Ce qui a été fait - création de la classe `SeedDataSpotify` - ajout de la classe de configuration `SpotifySeederOptions` - appel à l’API Spotify via `HttpClient` - authentification avec le flux OAuth `client_credentials` - récupération d’artistes par genre - récupération des albums de chaque artiste - récupération des titres de chaque album - mapping des données Spotify vers les entités métier : - `Artiste` - `Style` - `Titre` - `Commentaire` - génération de commentaires locaux via `SeedDataLocal` - transformation des genres Spotify en `Style` - génération de valeurs applicatives cohérentes : - `Chronique` - `NbLectures` - `NbLikes` - `DateSortie` - `UrlJaquette` - `UrlEcoute` ### Comportement Le seeder produit un jeu de données exploitable par : - le mode base de données - le mode mémoire ## 2. Création d’un conteneur commun pour le seeding ### Fichier ajouté [Webzine.Entity/Fixtures/SeedDataSet.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Fixtures\SeedDataSet.cs) ### Ce qui a été fait Ajout d’un objet `SeedDataSet` contenant : - `Artistes` - `Styles` - `Titres` - `Commentaires` ### Pourquoi Cela permet d’unifier le résultat du seeding, qu’il vienne : - du générateur local - de Spotify ## 3. Adaptation du repository DB ### Fichier modifié [Webzine.Repository/DbEntityRepository.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Repository\DbEntityRepository.cs) ### Ce qui a été fait Modification de `SeedBaseDeDonnees` pour qu’elle puisse : - continuer à générer les données locales comme avant - ou accepter un `SeedDataSet` externe déjà préparé ### Résultat Le repository peut maintenant insérer en base : - soit les données fake locales - soit les données réelles récupérées depuis Spotify ## 4. Branchement du seeder dans le démarrage de l’application ### Fichier modifié [Webzine.WebApplication/Program.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\Program.cs) ### Ce qui a été fait - enregistrement de la configuration `SpotifySeeder` - enregistrement de `SeedDataSpotify` via `AddHttpClient` - lecture de `SeederType` - ajout de la logique : - si `Seeder = Spotify`, on appelle `SeedDataSpotify` - sinon on garde `SeedDataLocal` ### Cas couverts - `Repository = Db` - `Repository = Local` Donc le mode Spotify fonctionne aussi bien : - avec SQLite/PostgreSQL - qu’avec le store mémoire ## 5. Ajout de la configuration Spotify ### Fichiers modifiés - [Webzine.WebApplication/appsettings.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.json) - [Webzine.WebApplication/appsettings.Development.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Development.json) - [Webzine.WebApplication/appsettings.Production.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Production.json) ### Ce qui a été ajouté Section `SpotifySeeder` avec : - `ClientId` - `ClientSecret` - `Market` - `Genres` - `ArtistsPerGenre` - `AlbumsPerArtist` - `TracksPerAlbum` - `MaxCommentsPerTrack` ### Utilisation Pour activer le seeder Spotify : ```json { "Seeder": "Spotify" } ``` Et renseigner : ```json "SpotifySeeder": { "ClientId": "...", "ClientSecret": "..." } ``` ## 6. Dépendance ajoutée ### Fichier modifié [Webzine.Entity/Webzine.Entity.csproj](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Webzine.Entity.csproj) ### Ce qui a été fait Ajout du package : - `Microsoft.Extensions.Options` ### Pourquoi Pour injecter proprement `SpotifySeederOptions` dans `SeedDataSpotify` ## 7. Effet sur les données de l’application Avec le seeder Spotify, les titres créés utilisent maintenant : - un vrai nom de titre - un vrai artiste - un vrai album - une vraie jaquette Spotify - une vraie URL Spotify - des styles dérivés des genres Spotify Les commentaires restent générés localement pour enrichir l’affichage. ## 8. Point d’attention Je n’ai pas pu valider la compilation complète dans cet environnement à cause d’un problème SDK/.NET local lié au workload resolver, pas à une erreur C# remontée sur les fichiers modifiés. ## 9. Fichiers impactés ### Ajoutés - [Webzine.Entity/Fixtures/SeedDataSpotify.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Fixtures\SeedDataSpotify.cs) - [Webzine.Entity/Fixtures/SeedDataSet.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Fixtures\SeedDataSet.cs) ### Modifiés - [Webzine.Repository/DbEntityRepository.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Repository\DbEntityRepository.cs) - [Webzine.WebApplication/Program.cs](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\Program.cs) - [Webzine.WebApplication/appsettings.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.json) - [Webzine.WebApplication/appsettings.Development.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Development.json) - [Webzine.WebApplication/appsettings.Production.json](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.WebApplication\appsettings.Production.json) - [Webzine.Entity/Webzine.Entity.csproj](c:\Users\lmasi\Documents\DIIAGE\P4\Webzine\Webzine.Entity\Webzine.Entity.csproj)