Browse Source

fix television metadata (#161)

pull/162/head
Jason Dove 5 years ago committed by GitHub
parent
commit
9c0ada2df5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      ErsatzTV.Application/MediaCards/Mapper.cs
  2. 18
      ErsatzTV.Application/MediaCards/MusicVideoCardViewModel.cs
  3. 2
      ErsatzTV.Application/MediaCollections/Commands/AddArtistToCollectionHandler.cs
  4. 6
      ErsatzTV.Application/Search/SearchResultAllItemsViewModel.cs
  5. 2
      ErsatzTV.Infrastructure/Data/Repositories/ArtistRepository.cs
  6. 18
      ErsatzTV.Infrastructure/Migrations/20210407113048_Delete_Orphan_GenreTagStudio.cs
  7. 2164
      ErsatzTV.Infrastructure/Migrations/20210410232003_Update_LibraryLastScan_Metadata.Designer.cs
  8. 24
      ErsatzTV.Infrastructure/Migrations/20210410232003_Update_LibraryLastScan_Metadata.cs
  9. 4
      ErsatzTV/Pages/Artist.razor
  10. 5
      ErsatzTV/Pages/ArtistList.razor
  11. 17
      ErsatzTV/Pages/CollectionItems.razor
  12. 6
      ErsatzTV/Pages/Search.razor

2
ErsatzTV.Application/MediaCards/Mapper.cs

@ -82,7 +82,7 @@ namespace ErsatzTV.Application.MediaCards @@ -82,7 +82,7 @@ namespace ErsatzTV.Application.MediaCards
collection.MediaItems.OfType<Season>().Map(ProjectToViewModel).ToList(),
collection.MediaItems.OfType<Episode>().Map(e => ProjectToViewModel(e.EpisodeMetadata.Head()))
.ToList(),
collection.MediaItems.OfType<Artist>().Map(a => ProjectToViewModel(a.ArtistMetadata.Head())).ToList(),
collection.MediaItems.OfType<Artist>().Map(a => ProjectToViewModel(a.ArtistMetadata.Head())).ToList(),
collection.MediaItems.OfType<MusicVideo>().Map(mv => ProjectToViewModel(mv.MusicVideoMetadata.Head()))
.ToList()) { UseCustomPlaybackOrder = collection.UseCustomPlaybackOrder };

18
ErsatzTV.Application/MediaCards/MusicVideoCardViewModel.cs

@ -1,12 +1,18 @@ @@ -1,12 +1,18 @@
namespace ErsatzTV.Application.MediaCards
{
public record MusicVideoCardViewModel
(int MusicVideoId, string Title, string Subtitle, string SortTitle, string Plot, string Poster) : MediaCardViewModel(
MusicVideoId,
Title,
Subtitle,
SortTitle,
Poster)
(
int MusicVideoId,
string Title,
string Subtitle,
string SortTitle,
string Plot,
string Poster) : MediaCardViewModel(
MusicVideoId,
Title,
Subtitle,
SortTitle,
Poster)
{
public int CustomIndex { get; set; }
}

2
ErsatzTV.Application/MediaCollections/Commands/AddArtistToCollectionHandler.cs

@ -12,9 +12,9 @@ namespace ErsatzTV.Application.MediaCollections.Commands @@ -12,9 +12,9 @@ namespace ErsatzTV.Application.MediaCollections.Commands
public class
AddArtistToCollectionHandler : MediatR.IRequestHandler<AddArtistToCollection, Either<BaseError, Unit>>
{
private readonly IArtistRepository _artistRepository;
private readonly ChannelWriter<IBackgroundServiceRequest> _channel;
private readonly IMediaCollectionRepository _mediaCollectionRepository;
private readonly IArtistRepository _artistRepository;
public AddArtistToCollectionHandler(
IMediaCollectionRepository mediaCollectionRepository,

6
ErsatzTV.Application/Search/SearchResultAllItemsViewModel.cs

@ -2,5 +2,9 @@ @@ -2,5 +2,9 @@
namespace ErsatzTV.Application.Search
{
public record SearchResultAllItemsViewModel(List<int> MovieIds, List<int> ShowIds, List<int> ArtistIds, List<int> MusicVideoIds);
public record SearchResultAllItemsViewModel(
List<int> MovieIds,
List<int> ShowIds,
List<int> ArtistIds,
List<int> MusicVideoIds);
}

2
ErsatzTV.Infrastructure/Data/Repositories/ArtistRepository.cs

@ -103,7 +103,7 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -103,7 +103,7 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
await dbContext.SaveChangesAsync();
return ids;
}
public async Task<Option<Artist>> GetArtist(int artistId)
{
await using TvContext dbContext = _dbContextFactory.CreateDbContext();

18
ErsatzTV.Infrastructure/Migrations/20210407113048_Delete_Orphan_GenreTagStudio.cs

@ -9,25 +9,25 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -9,25 +9,25 @@ namespace ErsatzTV.Infrastructure.Migrations
migrationBuilder.Sql(
@"DELETE FROM Genre
WHERE MovieMetadataId NOT IN (SELECT Id FROM MovieMetadata)
OR ShowMetadataId NOT IN (SELECT Id FROM Show)
OR SeasonMetadataId NOT IN (SELECT Id FROM Season)
OR EpisodeMetadataId NOT IN (SELECT Id FROM Episode)
OR ShowMetadataId NOT IN (SELECT Id FROM ShowMetadata)
OR SeasonMetadataId NOT IN (SELECT Id FROM SeasonMetadata)
OR EpisodeMetadataId NOT IN (SELECT Id FROM EpisodeMetadata)
OR MusicVideoMetadataId NOT IN (SELECT Id FROM MusicVideoMetadata)");
migrationBuilder.Sql(
@"DELETE FROM Tag
WHERE MovieMetadataId NOT IN (SELECT Id FROM MovieMetadata)
OR ShowMetadataId NOT IN (SELECT Id FROM Show)
OR SeasonMetadataId NOT IN (SELECT Id FROM Season)
OR EpisodeMetadataId NOT IN (SELECT Id FROM Episode)
OR ShowMetadataId NOT IN (SELECT Id FROM ShowMetadata)
OR SeasonMetadataId NOT IN (SELECT Id FROM SeasonMetadata)
OR EpisodeMetadataId NOT IN (SELECT Id FROM EpisodeMetadata)
OR MusicVideoMetadataId NOT IN (SELECT Id FROM MusicVideoMetadata)");
migrationBuilder.Sql(
@"DELETE FROM Studio
WHERE MovieMetadataId NOT IN (SELECT Id FROM MovieMetadata)
OR ShowMetadataId NOT IN (SELECT Id FROM Show)
OR SeasonMetadataId NOT IN (SELECT Id FROM Season)
OR EpisodeMetadataId NOT IN (SELECT Id FROM Episode)
OR ShowMetadataId NOT IN (SELECT Id FROM ShowMetadata)
OR SeasonMetadataId NOT IN (SELECT Id FROM SeasonMetadata)
OR EpisodeMetadataId NOT IN (SELECT Id FROM EpisodeMetadata)
OR MusicVideoMetadataId NOT IN (SELECT Id FROM MusicVideoMetadata)");
}

2164
ErsatzTV.Infrastructure/Migrations/20210410232003_Update_LibraryLastScan_Metadata.Designer.cs generated

File diff suppressed because it is too large Load Diff

24
ErsatzTV.Infrastructure/Migrations/20210410232003_Update_LibraryLastScan_Metadata.cs

@ -0,0 +1,24 @@ @@ -0,0 +1,24 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ErsatzTV.Infrastructure.Migrations
{
public partial class Update_LibraryLastScan_Metadata : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.Sql(
@"UPDATE LibraryPath SET LastScan = '0001-01-01 00:00:00' WHERE Id IN
(SELECT LP.Id FROM LibraryPath LP INNER JOIN Library L on L.Id = LP.LibraryId WHERE MediaKind = 2)");
migrationBuilder.Sql(
@"UPDATE Library SET LastScan = '0001-01-01 00:00:00' WHERE MediaKind = 2");
migrationBuilder.Sql(
@"UPDATE ShowMetadata SET DateUpdated = '0001-01-01 00:00:00' WHERE MetadataKind = 1");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
}
}

4
ErsatzTV/Pages/Artist.razor

@ -101,7 +101,7 @@ @@ -101,7 +101,7 @@
}
else
{
<MudSkeleton SkeletonType="SkeletonType.Rectangle" Animation="Animation.False" Height="220px" Width="293px" />
<MudSkeleton SkeletonType="SkeletonType.Rectangle" Animation="Animation.False" Height="220px" Width="293px"/>
}
<MudCardContent Class="ml-3">
<div style="display: flex; flex-direction: column; height: 100%">
@ -151,7 +151,7 @@ @@ -151,7 +151,7 @@
NavigationManager.NavigateTo($"/media/collections/{collection.Id}");
}
}
private async Task AddMusicVideoToCollection(MusicVideoCardViewModel musicVideo)
{
var parameters = new DialogParameters { { "EntityType", "music video" }, { "EntityName", musicVideo.Title } };

5
ErsatzTV/Pages/ArtistList.razor

@ -131,7 +131,10 @@ @@ -131,7 +131,10 @@
private void SelectClicked(MediaCardViewModel card, MouseEventArgs e)
{
List<MediaCardViewModel> GetSortedItems() => _data.Cards.OrderBy(m => m.SortTitle).ToList<MediaCardViewModel>();
List<MediaCardViewModel> GetSortedItems()
{
return _data.Cards.OrderBy(m => m.SortTitle).ToList<MediaCardViewModel>();
}
SelectClicked(GetSortedItems, card, e);
}

17
ErsatzTV/Pages/CollectionItems.razor

@ -271,13 +271,16 @@ @@ -271,13 +271,16 @@
private void SelectClicked(MediaCardViewModel card, MouseEventArgs e)
{
List<MediaCardViewModel> GetSortedItems() => _data.MovieCards.OrderBy(m => m.SortTitle)
.Append<MediaCardViewModel>(_data.ShowCards.OrderBy(s => s.SortTitle))
.Append(_data.SeasonCards.OrderBy(s => s.SortTitle))
.Append(_data.EpisodeCards.OrderBy(ep => ep.Aired))
.Append(_data.ArtistCards.OrderBy(a => a.SortTitle))
.Append(_data.MusicVideoCards.OrderBy(mv => mv.SortTitle))
.ToList();
List<MediaCardViewModel> GetSortedItems()
{
return _data.MovieCards.OrderBy(m => m.SortTitle)
.Append<MediaCardViewModel>(_data.ShowCards.OrderBy(s => s.SortTitle))
.Append(_data.SeasonCards.OrderBy(s => s.SortTitle))
.Append(_data.EpisodeCards.OrderBy(ep => ep.Aired))
.Append(_data.ArtistCards.OrderBy(a => a.SortTitle))
.Append(_data.MusicVideoCards.OrderBy(mv => mv.SortTitle))
.ToList();
}
SelectClicked(GetSortedItems, card, e);
}

6
ErsatzTV/Pages/Search.razor

@ -44,7 +44,7 @@ @@ -44,7 +44,7 @@
{
<MudLink Class="ml-4" Href="@(NavigationManager.Uri.Split("#").Head() + "#shows")" Style="margin-bottom: auto; margin-top: auto">@_shows.Count Shows</MudLink>
}
if (_artists.Count > 0)
{
<MudLink Class="ml-4" Href="@(NavigationManager.Uri.Split("#").Head() + "#artists")" Style="margin-bottom: auto; margin-top: auto">@_artists.Count Artists</MudLink>
@ -256,7 +256,7 @@ @@ -256,7 +256,7 @@
Right: _ => Snackbar.Add($"Added {show.Title} to collection {collection.Name}", Severity.Success));
}
}
if (card is ArtistCardViewModel artist)
{
var parameters = new DialogParameters { { "EntityType", "artist" }, { "EntityName", artist.Title } };
@ -319,7 +319,7 @@ @@ -319,7 +319,7 @@
}
return uri;
}
private string GetArtistsLink()
{
var uri = "/media/music/artists/page/1";

Loading…
Cancel
Save