refactor: amélioration de la journalisation et la gestion des exceptions dans les repositories de styles et titres

This commit is contained in:
mirage
2026-03-26 11:29:53 +01:00
parent 4deb7af6f0
commit 2e9373a853
7 changed files with 738 additions and 385 deletions

View File

@@ -2,16 +2,40 @@ using Webzine.Entity;
namespace Webzine.Repository.Contracts
{
/// <summary>
/// Interface définissant les opérations de base pour le repository de styles, permettant d'ajouter, supprimer, trouver et mettre à jour des styles dans la source de données.
/// </summary>
public interface IStyleRepository
{
/// <summary>
/// Ajoute un style à la liste des styles.
/// </summary>
/// <param name="style">L'objet style à ajouter.</param>
void Add(Style style);
/// <summary>
/// Supprime un style de la liste des styles.
/// </summary>
/// <param name="style">L'objet style à supprimer.</param>
void Delete(Style style);
/// <summary>
/// Trouve un style dans la liste des styles en fonction de son identifiant.
/// </summary>
/// <param name="id">L'identifiant du style à trouver.</param>
/// <returns>Le style correspondant à l'identifiant fourni, ou null si aucun style n'est trouvé.</returns>
Style Find(int id);
/// <summary>
/// Trouve tous les styles dans la liste des styles.
/// </summary>
/// <returns>Une collection de tous les styles présents dans la liste.</returns>
IEnumerable<Style> FindAll();
/// <summary>
/// Met à jour un style dans la liste des styles en fonction de son identifiant.
/// </summary>
/// <param name="style">L'objet style à mettre à jour.</param
void Update(Style style);
}
}

View File

@@ -0,0 +1,81 @@
using Webzine.Entity;
namespace Webzine.Repository.Contracts
{
/// <summary>
/// Interface qui définit les opérations de base pour la gestion des titres dans une source de données.
/// </summary>
public interface ITitreRepository
{
/// <summary>
/// Ajoute un titre à la liste des titres.
/// </summary>
/// <param name="titre">L'objet titre à ajouter.</param>
void Add(Titre titre);
/// <summary>
/// Remonte le nombre de titres.
/// </summary>
/// <returns>Le nombre total de titres présents dans la liste après l'incrémentation du nombre de lectures.</returns>
int Count();
/// <summary>
/// Supprime un titre de la liste des titres.
/// </summary>
/// <param name="titre">L'objet titre à supprimer.</param>
void Delete(Titre titre);
/// <summary>
/// Trouve un titre dans la liste des titres en fonction de son identifiant.
/// </summary>
/// <param name="idTitre">L'identifiant du titre à trouver.</param>
/// <returns>Le titre correspondant à l'identifiant fourni, ou null si aucun titre n'est trouvé.</returns>
Titre Find(int idTitre);
/// <summary>
/// Recherche les titres dans la liste des titres en fonction de l'offset et de la limite spécifiés, permettant ainsi une pagination des résultats.
/// </summary>
/// <param name="offset">Le nombre de titres à ignorer avant de commencer à retourner les résultats.</param>
/// <param name="limit">Le nombre maximum de titres à retourner.</param>
/// <returns>Une collection de titres correspondant au critère de pagination, triée par libellé.</returns>
IEnumerable<Titre> FindTitres(int offset, int limit);
/// <summary>
/// Trouve tous les titres dans la liste des titres.
/// </summary>
/// <returns>Une collection de tous les titres présents dans la liste.</returns>
IEnumerable<Titre> FindAll();
/// <summary>
/// Incrémente le nombre de lectures d'un titre donné. Si le titre est null, un message d'avertissement est enregistré dans les logs et aucune action n'est effectuée.
/// </summary>
/// <param name="titre">L'objet titre dont le nombre de lectures doit être incrémenté.</param>
void IncrementNbLectures(Titre titre);
/// <summary>
/// Incrémente le nombre de likes d'un titre donné. Si le titre est null, un message d'avertissement est enregistré dans les logs et aucune action n'est effectuée.
/// </summary>
/// <param name="titre">L'objet titre dont le nombre de likes doit être incrémenté.</param>
void IncrementNbLikes(Titre titre);
/// <summary>
/// Recherche les titres dont le libellé contient le mot spécifié, en ignorant la casse.
/// </summary>
/// <param name="mot">Le mot à rechercher dans les libellés des titres.</param>
/// <returns>Une collection de titres correspondant au critère de recherche, triée par libellé.</returns>
IEnumerable<Titre> Search(string mot);
/// <summary>
/// Recherche les titres associés à un style dont le libellé contient la chaîne spécifiée, en ignorant la casse.
/// </summary>
/// <param name="libelle">Le libellé du style à rechercher dans les titres.</param>
/// <returns>Une collection de titres correspondant au critère de recherche, triée par libellé.</returns>
IEnumerable<Titre> SearchByStyle(string libelle);
/// <summary>
/// Met à jour un titre dans la liste des titres en fonction de son identifiant. Si aucun titre correspondant à l'identifiant du titre fourni n'est trouvé, un message d'avertissement est enregistré dans les logs et aucune mise à jour n'est effectuée.
/// </summary>
/// <param name="titre">L'objet titre à mettre à jour.</param>
void Update(Titre titre);
}
}

View File

@@ -1,29 +0,0 @@
using Webzine.Entity;
namespace Webzine.Repository.Contracts
{
public interface ITitreRepository
{
void Add(Titre titre);
int Count();
void Delete(Titre titre);
Titre Find(int idTitre);
IEnumerable<Titre> FindTitres(int offset, int limit);
IEnumerable<Titre> FindAll();
void IncrementNbLectures(Titre titre);
void IncrementNbLikes(Titre titre);
IEnumerable<Titre> Search(string mot);
IEnumerable<Titre> SearchByStyle(string libelle);
void Update(Titre titre);
}
}