diff --git a/ErsatzTV.Core.Tests/Fakes/FakeTelevisionRepository.cs b/ErsatzTV.Core.Tests/Fakes/FakeTelevisionRepository.cs index 74ea5594f..ddb0a8108 100644 --- a/ErsatzTV.Core.Tests/Fakes/FakeTelevisionRepository.cs +++ b/ErsatzTV.Core.Tests/Fakes/FakeTelevisionRepository.cs @@ -41,7 +41,7 @@ namespace ErsatzTV.Core.Tests.Fakes public Task GetEpisodeCount(int televisionSeasonId) => throw new NotSupportedException(); - public Task> GetPagedEpisodes(int televisionSeasonId, int pageNumber, int pageSize) => + public Task> GetPagedEpisodes(int seasonId, int pageNumber, int pageSize) => throw new NotSupportedException(); public Task> GetShowByPath(int mediaSourceId, string path) => throw new NotSupportedException(); diff --git a/ErsatzTV.Core/Interfaces/Repositories/ITelevisionRepository.cs b/ErsatzTV.Core/Interfaces/Repositories/ITelevisionRepository.cs index 062e6cee5..041d59d93 100644 --- a/ErsatzTV.Core/Interfaces/Repositories/ITelevisionRepository.cs +++ b/ErsatzTV.Core/Interfaces/Repositories/ITelevisionRepository.cs @@ -22,7 +22,7 @@ namespace ErsatzTV.Core.Interfaces.Repositories Task> GetSeasonItems(int seasonId); Task> GetEpisode(int televisionEpisodeId); Task GetEpisodeCount(int televisionSeasonId); - Task> GetPagedEpisodes(int televisionSeasonId, int pageNumber, int pageSize); + Task> GetPagedEpisodes(int seasonId, int pageNumber, int pageSize); Task> GetShowByMetadata(ShowMetadata metadata); Task> AddShow( diff --git a/ErsatzTV.Infrastructure/Data/Repositories/TelevisionRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/TelevisionRepository.cs index b54f65bc7..b693859da 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/TelevisionRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/TelevisionRepository.cs @@ -57,20 +57,19 @@ namespace ErsatzTV.Infrastructure.Data.Repositories .Map(Optional); public Task GetShowCount() => + // TODO: fix split shows _dbContext.Shows .AsNoTracking() .CountAsync(); public Task> GetPagedShows(int pageNumber, int pageSize) => - // TODO: fix this - new List().AsTask(); - // _dbContext.ShowMetadata - // .AsNoTracking() - // .Include(s => s.Show) - // .OrderBy(s => s.Metadata == null ? string.Empty : s.Metadata.SortTitle) - // .Skip((pageNumber - 1) * pageSize) - // .Take(pageSize) - // .ToListAsync(); + // TODO: fix split shows + _dbContext.ShowMetadata + .AsNoTracking() + .OrderBy(sm => sm.SortTitle) + .Skip((pageNumber - 1) * pageSize) + .Take(pageSize) + .ToListAsync(); public Task> GetAllSeasons() => _dbContext.Seasons @@ -118,23 +117,18 @@ namespace ErsatzTV.Infrastructure.Data.Repositories .Where(e => e.SeasonId == televisionSeasonId) .CountAsync(); - public Task> GetPagedEpisodes( - int televisionSeasonId, - int pageNumber, - int pageSize) => - // TODO: fix this - new List().AsTask(); - // _dbContext.EpisodeMetadata - // .AsNoTracking() - // .Include(e => e.Metadata) - // .Include(e => e.Season) - // .ThenInclude(s => s.TelevisionShow) - // .ThenInclude(s => s.Metadata) - // .Where(e => e.SeasonId == televisionSeasonId) - // .OrderBy(s => s.Metadata.Episode) - // .Skip((pageNumber - 1) * pageSize) - // .Take(pageSize) - // .ToListAsync(); + public Task> GetPagedEpisodes(int seasonId, int pageNumber, int pageSize) => + _dbContext.EpisodeMetadata + .AsNoTracking() + .Filter(em => em.Episode.SeasonId == seasonId) + .Include(em => em.Episode) + .ThenInclude(e => e.Season) + .ThenInclude(s => s.Show) + .ThenInclude(s => s.ShowMetadata) + .OrderBy(em => em.SortTitle) + .Skip((pageNumber - 1) * pageSize) + .Take(pageSize) + .ToListAsync(); public async Task> GetShowByMetadata(ShowMetadata metadata) { diff --git a/ErsatzTV.Infrastructure/Data/TvContext.cs b/ErsatzTV.Infrastructure/Data/TvContext.cs index f9661c8e8..ae85e1050 100644 --- a/ErsatzTV.Infrastructure/Data/TvContext.cs +++ b/ErsatzTV.Infrastructure/Data/TvContext.cs @@ -26,6 +26,7 @@ namespace ErsatzTV.Infrastructure.Data public DbSet ShowMetadata { get; set; } public DbSet Seasons { get; set; } public DbSet Episodes { get; set; } + public DbSet EpisodeMetadata { get; set; } public DbSet PlexMovieMediaItems { get; set; } public DbSet Collections { get; set; } public DbSet ProgramSchedules { get; set; }