#211 : Optimisation de la recherche des dernières chroniques et des titres les plus populaires.
This commit is contained in:
@@ -107,5 +107,19 @@
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns>Un tuple contenant l'identifiant et le libellé du titre le plus joué, ou null si aucun titre n'existe.</returns>
|
/// <returns>Un tuple contenant l'identifiant et le libellé du titre le plus joué, ou null si aucun titre n'existe.</returns>
|
||||||
(int IdTitre, string Libelle)? FindMostPlayedTitle();
|
(int IdTitre, string Libelle)? FindMostPlayedTitle();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Récupération des chroniques.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="offset">Nombre d'éléments.</param>
|
||||||
|
/// <param name="limit">Limite d'éléments.</param>
|
||||||
|
/// <returns>Liste des derniers titres chroniqués.</returns>
|
||||||
|
IEnumerable<Titre> DerniereChronique(int offset, int limit);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Récupération du top titre liké.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Liste de titre les plus likés.</returns>
|
||||||
|
IEnumerable<Titre> TopTitre(int offset, int limit);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -409,4 +409,45 @@ public class DbTitreRepository : ITitreRepository
|
|||||||
throw;
|
throw;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public IEnumerable<Titre> DerniereChronique(int offset, int limit)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.logger.LogInformation("Récupération des dernières chroniques.");
|
||||||
|
|
||||||
|
return this.context.Titres
|
||||||
|
.AsNoTracking()
|
||||||
|
.OrderByDescending(t => t.DateCreation)
|
||||||
|
.Paginate(offset, limit)
|
||||||
|
.Include(t => t.Artiste);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
this.logger.LogError(ex, "Erreur lors de la recuperation des dernieres chroniques.");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public IEnumerable<Titre> TopTitre(int offset, int limit)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.logger.LogInformation("Récupération du Top Titre.");
|
||||||
|
var titres = this.context.Titres
|
||||||
|
.AsNoTracking()
|
||||||
|
.OrderByDescending(t => t.NbLikes)
|
||||||
|
.Paginate(offset, limit)
|
||||||
|
.Include(a => a.Artiste);
|
||||||
|
|
||||||
|
return titres;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
this.logger.LogError(ex, "Erreur lors de la récupération du Top Titre.");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -181,4 +181,39 @@ public class LocalTitreRepository : ITitreRepository
|
|||||||
|
|
||||||
return titre == null ? null : (titre.IdTitre, titre.Libelle);
|
return titre == null ? null : (titre.IdTitre, titre.Libelle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public IEnumerable<Titre> DerniereChronique(int offset, int limit)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return this.dataStore.Titres
|
||||||
|
.OrderByDescending(t => t.DateCreation)
|
||||||
|
.Paginate(offset, limit);
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
this.logger.LogError(ex, "Erreur lors de la recuperation des dernieres chroniques.");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc/>
|
||||||
|
public IEnumerable<Titre> TopTitre(int offset, int limit)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.logger.LogInformation("Récupération du Top Titre.");
|
||||||
|
var titres = this.dataStore.Titres
|
||||||
|
.OrderByDescending(t => t.NbLikes)
|
||||||
|
.Paginate(offset, limit);
|
||||||
|
|
||||||
|
return titres;
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
this.logger.LogError(ex, "Erreur lors de la récupération du Top Titre.");
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -47,15 +47,13 @@
|
|||||||
var totalTitres = this.titreRepository.Count();
|
var totalTitres = this.titreRepository.Count();
|
||||||
var totalPages = (int)Math.Ceiling((double)totalTitres / derniereChronique);
|
var totalPages = (int)Math.Ceiling((double)totalTitres / derniereChronique);
|
||||||
|
|
||||||
var titresPagines = this.titreRepository.FindTitres(page * derniereChronique, derniereChronique);
|
var titresPagines = this.titreRepository.DerniereChronique(page * derniereChronique, derniereChronique).ToList();
|
||||||
var topTitres = this.titreRepository.FindAll()
|
var topTitres = this.titreRepository.TopTitre(nbTopTitres, nbTopTitres).ToList();
|
||||||
.OrderByDescending(t => t.NbLikes)
|
|
||||||
.Take(nbTopTitres);
|
|
||||||
|
|
||||||
var vm = new AccueilIndexViewModel
|
var vm = new AccueilIndexViewModel
|
||||||
{
|
{
|
||||||
DerniersTitres = titresPagines.ToList(),
|
DerniersTitres = titresPagines,
|
||||||
TopTitres = topTitres.ToList(),
|
TopTitres = topTitres,
|
||||||
Page = page,
|
Page = page,
|
||||||
TotalPages = totalPages,
|
TotalPages = totalPages,
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user