diff --git a/Webzine.Repository.Contracts/IArtisteRepository.cs b/Webzine.Repository.Contracts/IArtisteRepository.cs
index 3c873c9..4eef62b 100644
--- a/Webzine.Repository.Contracts/IArtisteRepository.cs
+++ b/Webzine.Repository.Contracts/IArtisteRepository.cs
@@ -23,7 +23,7 @@ namespace Webzine.Repository.Contracts
/// Récupère un artiste par son identifiant unique. Si aucun artiste n'est trouvé, retourne null.
///
/// L'identifiant de l'artiste.
- ///
+ /// L'artiste trouvé ou null.
Artiste Find(int id);
///
diff --git a/Webzine.Repository.Contracts/ICommentaireRepository.cs b/Webzine.Repository.Contracts/ICommentaireRepository.cs
index 3529d83..bcd07d2 100644
--- a/Webzine.Repository.Contracts/ICommentaireRepository.cs
+++ b/Webzine.Repository.Contracts/ICommentaireRepository.cs
@@ -2,14 +2,43 @@ namespace Webzine.Repository.Contracts
{
using Webzine.Entity;
+ ///
+ /// Interface de repository pour les commentaires.
+ ///
public interface ICommentaireRepository
{
+ ///
+ /// Ajoute un commentaire à la source de données.
+ ///
+ /// Commentaire à ajouter.
void Add(Commentaire commentaire);
+ ///
+ /// Supprime un commentaire de la source de données.
+ ///
+ /// Commentaire à supprimer.
void Delete(Commentaire commentaire);
+ ///
+ /// Trouve un commentaire par son ID.
+ ///
+ /// ID du commentaire à trouver.
+ /// Le commentaire trouvé, ou null si non trouvé.
Commentaire Find(int id);
+ ///
+ /// Retourne tous les commentaires de la source de données.
+ ///
+ /// Une collection de commentaires.
IEnumerable FindAll();
+
+ ///
+ /// Retourne une collection de commentaires paginée à partir de la source de données.
+ ///
+ /// Le nombre de commentaires à ignorer avant de commencer à
+ /// récupérer les commentaires.
+ /// Le nombre maximum de commentaires à récupérer.
+ /// Une collection de commentaires paginée.
+ IEnumerable Paginate(int offset, int limit);
}
}
\ No newline at end of file
diff --git a/Webzine.Repository/DbArtisteRepository.cs b/Webzine.Repository/DbArtisteRepository.cs
index d34628e..f1d5856 100644
--- a/Webzine.Repository/DbArtisteRepository.cs
+++ b/Webzine.Repository/DbArtisteRepository.cs
@@ -13,7 +13,6 @@ namespace Webzine.Repository
///
/// Initialise une classe qui implémente l'interface pour gérer les opérations de base de données liées aux artistes.
- /// Utilise en injection de dépendances. // TODO commentaire faux.
///
public class DbArtisteRepository : IArtisteRepository
{
@@ -23,8 +22,8 @@ namespace Webzine.Repository
///
/// Initializes a new instance of the class.
///
- /// Le contexte de base de données à utiliser pour accéder aux entités et effectuer des opérations de
- /// persistance. Ne peut pas être null.
+ /// Le contexte de base de données à utiliser pour accéder aux entités et effectuer des opérations de persistance.
+ /// Le service de journalisation.
public DbArtisteRepository(WebzineDbContext context, ILogger logger)
{
this.logger = logger;
@@ -56,11 +55,6 @@ namespace Webzine.Repository
{
try
{
- if (artiste == null)
- {
- throw new ArgumentNullException(nameof(artiste), "L'artiste à supprimer ne peut pas être null.");
- }
-
this.context.Artistes.Remove(artiste);
this.context.SaveChanges();
this.logger.LogDebug("L'artiste {IdArtiste} a bien été supprimé", artiste.IdArtiste);
@@ -125,18 +119,13 @@ namespace Webzine.Repository
catch (Exception ex)
{
this.logger.LogError(ex, "Erreur lors de la récupération de tous les artistes.");
- return Enumerable.Empty(); // Retourne une liste vide au lieu de faire crash l'UI
+ throw;
}
}
///
public void Update(Artiste artiste)
{
- if (artiste == null)
- {
- throw new ArgumentNullException(nameof(artiste));
- }
-
try
{
this.context.Artistes.Update(artiste);
diff --git a/Webzine.Repository/DbCommentaireRepository.cs b/Webzine.Repository/DbCommentaireRepository.cs
index bfc5727..0c41ffd 100644
--- a/Webzine.Repository/DbCommentaireRepository.cs
+++ b/Webzine.Repository/DbCommentaireRepository.cs
@@ -16,10 +16,9 @@ public class DbCommentaireRepository : ICommentaireRepository
private readonly WebzineDbContext context;
///
- /// Initializes a new instance of the class.
/// Initialisation de .
///
- /// Le service de journalisation injecté pour suivre les opérations du repository.
+ /// Le service de journalisation.
/// Le contexte de base de données injecté.
public DbCommentaireRepository(ILogger logger, WebzineDbContext context)
{
@@ -33,7 +32,6 @@ public class DbCommentaireRepository : ICommentaireRepository
{
try
{
- this.logger.LogDebug("Ajout d'un nouveau commentaire de l'auteur : {Auteur}", commentaire.Auteur);
this.context.Commentaires.Add(commentaire);
this.context.SaveChanges();
this.logger.LogDebug("Commentaire ajouté avec l'id : {Id}", commentaire.IdCommentaire);
@@ -55,11 +53,6 @@ public class DbCommentaireRepository : ICommentaireRepository
{
try
{
- if (commentaire == null)
- {
- throw new ArgumentNullException(nameof(commentaire), "Le commentaire à supprimer ne peut pas être null.");
- }
-
this.context.Commentaires.Remove(commentaire);
this.context.SaveChanges();
this.logger.LogDebug("Le commentaire {IdCommentaire} a bien été supprimé", commentaire.IdCommentaire);
@@ -76,14 +69,6 @@ public class DbCommentaireRepository : ICommentaireRepository
}
}
- ///
- public int Count()
- {
- var count = this.context.Commentaires.Count();
- this.logger.LogDebug("Compte total des commentaires : {Count}", count);
- return count;
- }
-
///
public Commentaire Find(int idCommentaire)
{
@@ -98,8 +83,6 @@ public class DbCommentaireRepository : ICommentaireRepository
///
public IEnumerable FindAll()
{
- this.logger.LogDebug("Récupération de tous les commentaires");
-
var commentaires = this.context.Commentaires
.Include(c => c.Titre)
.OrderByDescending(c => c.DateCreation)
@@ -110,7 +93,7 @@ public class DbCommentaireRepository : ICommentaireRepository
}
///
- public IEnumerable FindCommentaires(int offset, int limit)
+ public IEnumerable Paginate(int offset, int limit)
{
this.logger.LogDebug("Recherche paginée des commentaires (offset : {Offset}, limit : {Limit})", offset, limit);
@@ -124,18 +107,4 @@ public class DbCommentaireRepository : ICommentaireRepository
this.logger.LogDebug("{Count} commentaires trouvés pour cette page", commentaires.Count);
return commentaires;
}
-
- ///
- public IEnumerable FindByIdTitre(int idTitre)
- {
- this.logger.LogDebug("Recherche des commentaires pour le titre ID : {IdTitre}", idTitre);
-
- var commentaires = this.context.Commentaires
- .Where(c => c.Titre.IdTitre == idTitre)
- .OrderByDescending(c => c.DateCreation)
- .ToList();
-
- this.logger.LogDebug($"{commentaires.Count} commentaires trouvés pour l'ID de titre : {idTitre}");
- return commentaires;
- }
}
\ No newline at end of file
diff --git a/Webzine.Repository/DbEntityRepository.cs b/Webzine.Repository/DbEntityRepository.cs
index 1558cc6..9368fb6 100644
--- a/Webzine.Repository/DbEntityRepository.cs
+++ b/Webzine.Repository/DbEntityRepository.cs
@@ -8,10 +8,17 @@ namespace Webzine.Repository
using Webzine.Entity;
using Webzine.Entity.Fixtures;
+ ///
+ /// Classe de repository pour les entités de la base de données.
+ ///
public class DbEntityRepository
{
private readonly WebzineDbContext context;
+ ///
+ /// Constructeur de DbEntityRepository.
+ ///
+ /// DB context.
public DbEntityRepository(WebzineDbContext context)
{
this.context = context;
diff --git a/Webzine.Repository/DbStyleRepository.cs b/Webzine.Repository/DbStyleRepository.cs
index 4f5c20c..452b312 100644
--- a/Webzine.Repository/DbStyleRepository.cs
+++ b/Webzine.Repository/DbStyleRepository.cs
@@ -93,13 +93,6 @@ public class DbStyleRepository : IStyleRepository
{
this.logger.LogDebug("Recherche du style avec l'ID: {Id}", id);
- if (id <= 0) // TODO à supprimer, c'est au controller de vérifier la validité de l'id
- {
- this.logger.LogWarning("Tentative de recherche d'un style avec un Id invalide: {Id}", id);
- return new Style(); // TODO pas de retour d'objet vide
- }
-
- this.logger.LogDebug("Préparation de la requête avec inclusion des titres");
var style = this.context.Styles
.Include(s => s.Titres)
.FirstOrDefault(s => s.IdStyle == id);
@@ -107,13 +100,10 @@ public class DbStyleRepository : IStyleRepository
if (style == null)
{
this.logger.LogWarning("Style avec l'ID {Id} non trouvé", id);
- style = new Style();
- }
- else
- {
- this.logger.LogDebug("Style trouvé: {Libelle}", style.Libelle);
+ return null;
}
+ this.logger.LogDebug("Style trouvé: {Libelle}", style.Libelle);
return style;
}
catch (Exception ex)
@@ -151,7 +141,6 @@ public class DbStyleRepository : IStyleRepository
try
{
this.logger.LogInformation("Mise à jour du style avec l'ID: {IdStyle}", style.IdStyle);
- this.logger.LogDebug("Recherche du style en base de données");
var existingStyle = this.context.Styles.Find(style.IdStyle);
if (existingStyle == null)
@@ -160,8 +149,6 @@ public class DbStyleRepository : IStyleRepository
throw new InvalidOperationException($"Style avec l'ID {style.IdStyle} non trouvé.");
}
- // Update properties
- this.logger.LogDebug("Style trouvé, mise à jour des propriétés");
existingStyle.Libelle = style.Libelle;
this.context.SaveChanges();
diff --git a/Webzine.Repository/DbTitreRepository.cs b/Webzine.Repository/DbTitreRepository.cs
index 9390c15..0675c33 100644
--- a/Webzine.Repository/DbTitreRepository.cs
+++ b/Webzine.Repository/DbTitreRepository.cs
@@ -159,20 +159,14 @@ public class DbTitreRepository : ITitreRepository
try
{
this.logger.LogInformation("Incrémentation du nombre de likes pour le titre ID: {IdTitre}", titre.IdTitre);
- this.logger.LogDebug("Recherche du titre en base de données");
var existingTitre = this.context.Titres.Find(titre.IdTitre);
if (existingTitre != null)
{
- this.logger.LogDebug("Titre trouvé, incrémentation du compteur de likes");
existingTitre.NbLikes++;
this.context.SaveChanges();
this.logger.LogDebug("Nouveau nombre de likes: {NbLikes}", existingTitre.NbLikes);
}
- else
- {
- this.logger.LogWarning("Titre avec l'ID {IdTitre} non trouvé pour l'incrémentation des likes", titre.IdTitre);
- }
}
catch (DbUpdateException ex)
{
diff --git a/Webzine.Repository/LocalArtisteRepository.cs b/Webzine.Repository/LocalArtisteRepository.cs
index a65fe44..8a4f51c 100644
--- a/Webzine.Repository/LocalArtisteRepository.cs
+++ b/Webzine.Repository/LocalArtisteRepository.cs
@@ -10,22 +10,21 @@ namespace Webzine.Repository
using Webzine.Repository.Contracts;
///
- /// Initialise une classe qui implémente l'interface pour gérer les opérations de base de données liées aux artistes.
- /// Utilise en injection de dépendances. // TODO faux.
+ /// Initialise une classe qui implémente l'interface .
+ /// Gère les opérations liées aux artistes en utilisant une source de données locale (en mémoire).
///
public class LocalArtisteRepository : IArtisteRepository
{
private readonly ILogger logger;
- // private readonly List artistes; // TODO code mort
private readonly InMemoryDataStore dataStore;
///
/// Initializes a new instance of the class.
/// Est liéee à une liste d'artistes en local et utilise un logger pour enregistrer les opérations effectuées sur les artistes.
///
- /// La liste des artistes à initialiser. Ne peut pas être null. // TODO pas le bon paramètre
/// Le logger à utiliser pour enregistrer les messages de journalisation. Ne peut pas être null.
+ /// Le magasin de données en mémoire.
public LocalArtisteRepository(InMemoryDataStore dataStore, ILogger logger)
{
this.logger = logger;
@@ -49,11 +48,7 @@ namespace Webzine.Repository
///
public Artiste Find(int id)
{
- var artiste = this.dataStore.Artistes.First(a => a.IdArtiste == id);
- if (artiste == null)
- {
- return new Artiste(); // TODO ne pas retourner un objet vide, FirstOrDefault et gérer le null dans le controller
- }
+ var artiste = this.dataStore.Artistes.SingleOrDefault(a => a.IdArtiste == id);
return artiste;
}
diff --git a/Webzine.Repository/LocalCommentaireRepository.cs b/Webzine.Repository/LocalCommentaireRepository.cs
index a0b1da3..8f71958 100644
--- a/Webzine.Repository/LocalCommentaireRepository.cs
+++ b/Webzine.Repository/LocalCommentaireRepository.cs
@@ -15,7 +15,6 @@ namespace Webzine.Repository
///
/// Initialise une classe qui implémente l'interface pour gérer les opérations liées aux commentaires.
- /// Utilise en injection de dépendances.
///
public class LocalCommentaireRepository : ICommentaireRepository
{
@@ -25,7 +24,7 @@ namespace Webzine.Repository
///
/// Initializes a new instance of the class.
/// Initialise une nouvelle instance du .
- /// Est liée à un magasin de données en mémoire et utilise un logger pour enregistrer les opérations.
+ /// Gère les opérations liées aux commentaires en utilisant une source de données locale (en mémoire).
///
/// Le magasin de données en mémoire. Ne peut pas être null.
/// Le logger à utiliser pour enregistrer les messages de journalisation. Ne peut pas être null.
@@ -47,22 +46,10 @@ namespace Webzine.Repository
throw new NotSupportedException("Mode Local");
}
- ///
- public int Count()
- {
- return this.dataStore.Commentaires.Count;
- }
-
///
public Commentaire Find(int idCommentaire)
{
- var commentaire = this.dataStore.Commentaires.FirstOrDefault(c => c.IdCommentaire == idCommentaire);
- if (commentaire == null)
- {
- return new Commentaire();
- }
-
- return commentaire;
+ return this.dataStore.Commentaires.FirstOrDefault(c => c.IdCommentaire == idCommentaire);
}
///
@@ -74,27 +61,13 @@ namespace Webzine.Repository
}
///
- public IEnumerable FindCommentaires(int offset, int limit)
+ public IEnumerable Paginate(int offset, int limit)
{
- if (offset < 0 || limit <= 0)
- {
- return Enumerable.Empty();
- }
-
return this.dataStore.Commentaires
.OrderByDescending(c => c.DateCreation)
.Skip(offset)
.Take(limit)
.ToList();
}
-
- ///
- public IEnumerable FindByIdTitre(int idTitre)
- {
- return this.dataStore.Commentaires
- .Where(c => c.Titre != null && c.Titre.IdTitre == idTitre)
- .OrderByDescending(c => c.DateCreation)
- .ToList();
- }
}
}
\ No newline at end of file
diff --git a/Webzine.Repository/LocalStyleRepository.cs b/Webzine.Repository/LocalStyleRepository.cs
index 0b4d16c..76d37dc 100644
--- a/Webzine.Repository/LocalStyleRepository.cs
+++ b/Webzine.Repository/LocalStyleRepository.cs
@@ -17,9 +17,10 @@ public class LocalStyleRepository : IStyleRepository
///
/// Initializes a new instance of the class.
+ /// Gère les opérations liées aux styles en utilisant une source de données locale (en mémoire).
///
/// Le service de journalisation injecté pour suivre les opérations du repository.
- /// La liste de styles à utiliser comme source de données pour le repository.
+ /// Les données en mémoire.
public LocalStyleRepository(ILogger logger, InMemoryDataStore dataStore)
{
this.logger = logger;
diff --git a/Webzine.Repository/LocalTitreRepository.cs b/Webzine.Repository/LocalTitreRepository.cs
index bc1e488..a970bf9 100644
--- a/Webzine.Repository/LocalTitreRepository.cs
+++ b/Webzine.Repository/LocalTitreRepository.cs
@@ -78,7 +78,7 @@ public class LocalTitreRepository : ITitreRepository
public Titre Find(int idTitre)
{
return this.dataStore.Titres
- .First(t => t.IdTitre == idTitre);
+ .FirstOrDefault(t => t.IdTitre == idTitre);
}
///