Browse Source

get movie cards from new table

pull/31/head
Jason Dove 6 years ago
parent
commit
675d23eb2a
  1. 16
      ErsatzTV.Application/MediaCards/Mapper.cs
  2. 2
      ErsatzTV.Core/Interfaces/Repositories/IMovieRepository.cs
  3. 25
      ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs
  4. 1
      ErsatzTV.Infrastructure/Data/TvContext.cs

16
ErsatzTV.Application/MediaCards/Mapper.cs

@ -1,4 +1,5 @@ @@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using ErsatzTV.Core.Domain;
@ -37,19 +38,20 @@ namespace ErsatzTV.Application.MediaCards @@ -37,19 +38,20 @@ namespace ErsatzTV.Application.MediaCards
televisionEpisode.Poster,
televisionEpisode.Metadata?.Episode.ToString());
internal static MovieCardViewModel ProjectToViewModel(Movie movie) =>
internal static MovieCardViewModel ProjectToViewModel(NewMovieMetadata movieMetadata) =>
new(
movie.Id,
movie.Metadata?.Title,
movie.Metadata?.Year?.ToString(),
movie.Metadata?.SortTitle,
movie.Poster);
movieMetadata.MovieId,
movieMetadata.Title,
movieMetadata.ReleaseDate?.Year.ToString(),
movieMetadata.SortTitle,
null); // TODO: artwork
internal static SimpleMediaCollectionCardResultsViewModel
ProjectToViewModel(SimpleMediaCollection collection) =>
new(
collection.Name,
collection.Movies.Map(ProjectToViewModel).ToList(),
// TODO: fix this
new List<MovieCardViewModel>(), // collection.Movies.Map(ProjectToViewModel).ToList(),
collection.TelevisionShows.Map(ProjectToViewModel).ToList(),
collection.TelevisionSeasons.Map(ProjectToViewModel).ToList(),
collection.TelevisionEpisodes.Map(ProjectToViewModel).ToList());

2
ErsatzTV.Core/Interfaces/Repositories/IMovieRepository.cs

@ -12,6 +12,6 @@ namespace ErsatzTV.Core.Interfaces.Repositories @@ -12,6 +12,6 @@ namespace ErsatzTV.Core.Interfaces.Repositories
Task<Either<BaseError, PlexMovie>> GetOrAdd(PlexLibrary library, PlexMovie item);
Task<bool> Update(Movie movie);
Task<int> GetMovieCount();
Task<List<Movie>> GetPagedMovies(int pageNumber, int pageSize);
Task<List<NewMovieMetadata>> GetPagedMovies(int pageNumber, int pageSize);
}
}

25
ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs

@ -1,7 +1,9 @@ @@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using Dapper;
using ErsatzTV.Core;
using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Interfaces.Repositories;
@ -14,8 +16,13 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -14,8 +16,13 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
public class MovieRepository : IMovieRepository
{
private readonly TvContext _dbContext;
private readonly IDbConnection _dbConnection;
public MovieRepository(TvContext dbContext) => _dbContext = dbContext;
public MovieRepository(TvContext dbContext, IDbConnection dbConnection)
{
_dbContext = dbContext;
_dbConnection = dbConnection;
}
public Task<Option<Movie>> GetMovie(int movieId) =>
_dbContext.Movies
@ -57,17 +64,13 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -57,17 +64,13 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
}
public Task<int> GetMovieCount() =>
_dbContext.Movies
.AsNoTracking()
.CountAsync();
_dbConnection.QuerySingleAsync<int>(@"SELECT COUNT(DISTINCT MovieId) FROM NewMovieMetadata");
public Task<List<Movie>> GetPagedMovies(int pageNumber, int pageSize) =>
_dbContext.Movies
.Include(s => s.MovieMetadata)
.OrderBy(s => s.MovieMetadata.FirstOrDefault().SortTitle)
.Skip((pageNumber - 1) * pageSize)
.Take(pageSize)
.AsNoTracking()
public Task<List<NewMovieMetadata>> GetPagedMovies(int pageNumber, int pageSize) =>
_dbContext.MovieMetadata.FromSqlRaw(@"SELECT * FROM NewMovieMetadata WHERE Id IN
(SELECT Id FROM NewMovieMetadata GROUP BY MovieId, MetadataKind HAVING MetadataKind = MAX(MetadataKind))
ORDER BY SortTitle
LIMIT {0} OFFSET {1}", pageSize, (pageNumber - 1) * pageSize)
.ToListAsync();
private async Task<Either<BaseError, Movie>> AddMovie(int libraryPathId, string path)

1
ErsatzTV.Infrastructure/Data/TvContext.cs

@ -21,6 +21,7 @@ namespace ErsatzTV.Infrastructure.Data @@ -21,6 +21,7 @@ namespace ErsatzTV.Infrastructure.Data
public DbSet<PlexLibrary> PlexLibraries { get; set; }
public DbSet<MediaItem> MediaItems { get; set; }
public DbSet<Movie> Movies { get; set; }
public DbSet<NewMovieMetadata> MovieMetadata { get; set; }
public DbSet<Show> Shows { get; set; }
public DbSet<Season> Seasons { get; set; }
public DbSet<Episode> Episodes { get; set; }

Loading…
Cancel
Save