namespace Webzine.Repository.Contracts { using Webzine.Entity; /// /// Interface qui définit les opérations de base pour la gestion des titres dans une source de données. /// public interface ITitreRepository { /// /// Ajoute un titre à la liste des titres. /// /// L'objet titre à ajouter. void Add(Titre titre); /// /// Remonte le nombre de titres. /// /// Le nombre total de titres présents dans la liste après l'incrémentation du nombre de lectures. int Count(); /// /// Supprime un titre de la liste des titres. /// /// L'objet titre à supprimer. void Delete(Titre titre); /// /// Trouve un titre dans la liste des titres en fonction de son identifiant. /// /// L'identifiant du titre à trouver. /// Le titre correspondant à l'identifiant fourni, ou null si aucun titre n'est trouvé. Titre Find(int idTitre); /// /// 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. /// /// Le nombre de titres à ignorer avant de commencer à retourner les résultats. /// Le nombre maximum de titres à retourner. /// Une collection de titres correspondant au critère de pagination, triée par libellé. IEnumerable FindTitres(int offset, int limit); /// /// Trouve tous les titres dans la liste des titres. /// /// Une collection de tous les titres présents dans la liste. IEnumerable FindAll(); /// /// 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. /// /// L'objet titre dont le nombre de lectures doit être incrémenté. void IncrementNbLectures(Titre titre); /// /// 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. /// /// L'objet titre dont le nombre de likes doit être incrémenté. void IncrementNbLikes(Titre titre); /// /// Recherche les titres dont le libellé contient le mot spécifié, en ignorant la casse. /// /// Le mot à rechercher dans les libellés des titres. /// Une collection de titres correspondant au critère de recherche, triée par libellé. IEnumerable Search(string mot); /// /// Recherche les titres associés à un style dont le libellé contient la chaîne spécifiée, en ignorant la casse. /// /// Le libellé du style à rechercher dans les titres. /// Une collection de titres correspondant au critère de recherche, triée par libellé. IEnumerable SearchByStyle(string libelle); /// /// Retourne une liste de titre filtré par nom et paginé. /// /// Nombre de titres a passer. /// Nombre de titre récupéré. /// Nom du style. /// Une liste de titre. IEnumerable SearchByStylePaginate(int offset, int limit, string libelle); /// /// Compter le nombre de titres au sein d'un style. /// /// Style de la musique. /// Un entier. int CountByStyle(string libelle); /// /// 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. /// /// L'objet titre à mettre à jour. void Update(Titre titre); /// /// Retourne le nombre total de likes. /// /// Integer. int CountLike(); /// /// Retourne le nombre total de lecture. /// /// Integer. int CountLecture(); /// /// Retourne le nom de l'artiste ayant le plus de titres chroniqués. /// /// Le nom de l'artiste le plus chroniqué, ou null si aucun titre n'existe. string? FindMostReviewedArtistName(); /// /// Retourne le nom de l'artiste ayant le plus d'albums chroniqués. /// /// Le nom de l'artiste concerné, ou null si aucun titre n'existe. string? FindArtistNameWithMostReviewedAlbums(); /// /// Retourne l'identifiant et le libellé du titre le plus joué. /// /// Un tuple contenant l'identifiant et le libellé du titre le plus joué, ou null si aucun titre n'existe. (int IdTitre, string Libelle)? FindMostPlayedTitle(); /// /// Récupération des chroniques. /// /// Nombre d'éléments. /// Limite d'éléments. /// Liste des derniers titres chroniqués. IEnumerable DerniereChronique(int offset, int limit); /// /// Récupération du top titre liké. /// /// Liste de titre les plus likés. IEnumerable TopTitre(int offset, int limit); } }