Browse Source

fix split show display (same show in different folders/sources)

pull/26/head
Jason Dove 6 years ago
parent
commit
f111ef49a5
  1. 8
      ErsatzTV.Infrastructure/Data/DbInitializer.cs
  2. 55
      ErsatzTV.Infrastructure/Data/Repositories/TelevisionRepository.cs
  3. 1
      ErsatzTV.Infrastructure/Data/TvContext.cs

8
ErsatzTV.Infrastructure/Data/DbInitializer.cs

@ -55,14 +55,6 @@ namespace ErsatzTV.Infrastructure.Data @@ -55,14 +55,6 @@ namespace ErsatzTV.Infrastructure.Data
context.Channels.Add(defaultChannel);
context.SaveChanges();
// TODO: clean this up
// var mediaSource = new LocalMediaSource
// {
// Name = "Default"
// };
// context.MediaSources.Add(mediaSource);
// context.SaveChanges();
// TODO: create looping static image that mentions configuring via web
return Unit.Default;
}

55
ErsatzTV.Infrastructure/Data/Repositories/TelevisionRepository.cs

@ -50,37 +50,60 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -50,37 +50,60 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
.SingleOrDefaultAsync()
.Map(Optional);
// TODO: test with split folders (same show in different sources)
public Task<int> GetShowCount() =>
_dbContext.TelevisionShows
.AsNoTracking()
// .GroupBy(s => new { s.Metadata.Title, s.Metadata.Year })
.GroupBy(s => new { s.Metadata.Title, s.Metadata.Year })
.CountAsync();
// TODO: test with split folders (same show in different sources)
public Task<List<TelevisionShow>> GetPagedShows(int pageNumber, int pageSize) =>
_dbContext.TelevisionShows
.AsNoTracking()
.Include(s => s.Metadata)
.OrderBy(s => s.Metadata.SortTitle)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.AsNoTracking()
.ToListAsync();
.ToListAsync()
.Map(
list => list.GroupBy(s => new { s.Metadata.Title, s.Metadata.Year }).Select(g => g.First())
.ToList());
public Task<int> GetSeasonCount(int televisionShowId) =>
_dbContext.TelevisionSeasons
public async Task<int> GetSeasonCount(int televisionShowId)
{
Option<TelevisionShowMetadata> metadata = await _dbContext.TelevisionShowMetadata
.AsNoTracking()
.Where(s => s.TelevisionShowId == televisionShowId)
.CountAsync();
.Where(m => m.TelevisionShowId == televisionShowId)
.SingleOrDefaultAsync()
.Map(Optional);
public Task<List<TelevisionSeason>> GetPagedSeasons(int televisionShowId, int pageNumber, int pageSize) =>
_dbContext.TelevisionSeasons
.Where(s => s.TelevisionShowId == televisionShowId)
.OrderBy(s => s.Number)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
return await metadata.Match(
m => _dbContext.TelevisionShows
.AsNoTracking()
.Where(s => s.Metadata.Title == m.Title && s.Metadata.Year == m.Year)
.SelectMany(s => s.Seasons)
.CountAsync(),
Task.FromResult(0));
}
public async Task<List<TelevisionSeason>> GetPagedSeasons(int televisionShowId, int pageNumber, int pageSize)
{
Option<TelevisionShowMetadata> metadata = await _dbContext.TelevisionShowMetadata
.AsNoTracking()
.ToListAsync();
.Where(m => m.TelevisionShowId == televisionShowId)
.SingleOrDefaultAsync()
.Map(Optional);
return await metadata.Match(
m => _dbContext.TelevisionShows
.AsNoTracking()
.Where(s => s.Metadata.Title == m.Title && s.Metadata.Year == m.Year)
.SelectMany(s => s.Seasons)
.OrderBy(s => s.Number)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.ToListAsync(),
Task.FromResult(new List<TelevisionSeason>()));
}
public async Task<Either<BaseError, TelevisionShow>> GetOrAddShow(int mediaSourceId, string path)
{

1
ErsatzTV.Infrastructure/Data/TvContext.cs

@ -31,6 +31,7 @@ namespace ErsatzTV.Infrastructure.Data @@ -31,6 +31,7 @@ namespace ErsatzTV.Infrastructure.Data
public DbSet<FFmpegProfile> FFmpegProfiles { get; set; }
public DbSet<Resolution> Resolutions { get; set; }
public DbSet<TelevisionShow> TelevisionShows { get; set; }
public DbSet<TelevisionShowMetadata> TelevisionShowMetadata { get; set; }
public DbSet<TelevisionSeason> TelevisionSeasons { get; set; }
// support raw sql queries

Loading…
Cancel
Save