rework television media (#26)
* rework television media * refactor poster saving * television and movie views are working again * remove dead code * use paper styling for all cards * add show poster, plot to seasons page * remove missing shows; cleanup interfaces * fix split show display (same show in different folders/sources) * add placeholder "add to schedule" button * no more duplicate television shows, even with the same show split across sources * stop releasing CLI for now * use season number as season placeholder * add television shows to collections * add television seasons to collections * add television episodes to collections * add movies to collections * remove movies, shows, seasons, episodes from collections * fix page width and menus * fix buffer size defaults * fix chronological episode ordering * allow deleting media collections * don't get stuck building a playout with an empty collection * schedule editing and playouts work again * minor cleanup * remove dead code * fix bugs with viewing movies as they are loading * add scanner tests; support nested movie folders * update collections docs * rearrange order of schedule items * add show and season to schedule * delete schedules that use legacy collections, reset all posters * move cleanup to new migration * load fallback metadata when nfo fails; don't require metadata in ui * update readme and screenshots
This commit is contained in:
@@ -22,6 +22,8 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.ToView("No table or view exists for GenericIntegerId");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
@@ -39,6 +41,8 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
|
||||
b.Property<string>("Name")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.ToView("No table or view exists for MediaCollectionSummary");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
@@ -59,6 +63,8 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
|
||||
b.Property<string>("Title")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.ToView("No table or view exists for MediaItemSummary");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
@@ -256,6 +262,55 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
b.ToTable("MediaSources");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.MovieMetadata",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("ContentRating")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<DateTime?>("LastWriteTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("MovieId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Outline")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Plot")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<DateTime?>("Premiered")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("SortTitle")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("Source")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Tagline")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("Year")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("MovieId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("MovieMetadata");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.Playout",
|
||||
b =>
|
||||
@@ -315,18 +370,25 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
"ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("CollectionId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("CollectionType")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("PlayoutId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ProgramScheduleId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("MediaCollectionId")
|
||||
.HasColumnType("INTEGER");
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasKey("PlayoutId", "ProgramScheduleId", "MediaCollectionId");
|
||||
|
||||
b.HasIndex("MediaCollectionId");
|
||||
b.HasIndex("PlayoutId");
|
||||
|
||||
b.HasIndex("ProgramScheduleId");
|
||||
|
||||
@@ -414,10 +476,13 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("CollectionType")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("Index")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("MediaCollectionId")
|
||||
b.Property<int?>("MediaCollectionId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("ProgramScheduleId")
|
||||
@@ -426,12 +491,22 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
b.Property<TimeSpan?>("StartTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("TelevisionSeasonId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int?>("TelevisionShowId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("MediaCollectionId");
|
||||
|
||||
b.HasIndex("ProgramScheduleId");
|
||||
|
||||
b.HasIndex("TelevisionSeasonId");
|
||||
|
||||
b.HasIndex("TelevisionShowId");
|
||||
|
||||
b.ToTable("ProgramScheduleItems");
|
||||
});
|
||||
|
||||
@@ -458,20 +533,224 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"MediaItemSimpleMediaCollection",
|
||||
"ErsatzTV.Core.Domain.TelevisionEpisodeMetadata",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("ItemsId")
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTime?>("Aired")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("Episode")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTime?>("LastWriteTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Plot")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("Season")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("SortTitle")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("Source")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("TelevisionEpisodeId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TelevisionEpisodeId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("TelevisionEpisodeMetadata");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionSeason",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("Number")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Path")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Poster")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<DateTime?>("PosterLastWriteTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("TelevisionShowId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TelevisionShowId");
|
||||
|
||||
b.ToTable("TelevisionSeasons");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionShow",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Poster")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<DateTime?>("PosterLastWriteTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.ToTable("TelevisionShows");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionShowMetadata",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<DateTime?>("LastWriteTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("Plot")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<string>("SortTitle")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("Source")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("TelevisionShowId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Title")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int?>("Year")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TelevisionShowId")
|
||||
.IsUnique();
|
||||
|
||||
b.ToTable("TelevisionShowMetadata");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionShowSource",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("Id")
|
||||
.ValueGeneratedOnAdd()
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Discriminator")
|
||||
.IsRequired()
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.Property<int>("TelevisionShowId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("Id");
|
||||
|
||||
b.HasIndex("TelevisionShowId");
|
||||
|
||||
b.ToTable("TelevisionShowSource");
|
||||
|
||||
b.HasDiscriminator<string>("Discriminator").HasValue("TelevisionShowSource");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"MovieMediaItemSimpleMediaCollection",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("MoviesId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("SimpleMediaCollectionsId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("ItemsId", "SimpleMediaCollectionsId");
|
||||
b.HasKey("MoviesId", "SimpleMediaCollectionsId");
|
||||
|
||||
b.HasIndex("SimpleMediaCollectionsId");
|
||||
|
||||
b.ToTable("MediaItemSimpleMediaCollection");
|
||||
b.ToTable("SimpleMediaCollectionMovies");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"SimpleMediaCollectionTelevisionEpisodeMediaItem",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("SimpleMediaCollectionsId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("TelevisionEpisodesId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("SimpleMediaCollectionsId", "TelevisionEpisodesId");
|
||||
|
||||
b.HasIndex("TelevisionEpisodesId");
|
||||
|
||||
b.ToTable("SimpleMediaCollectionEpisodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"SimpleMediaCollectionTelevisionSeason",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("SimpleMediaCollectionsId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("TelevisionSeasonsId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("SimpleMediaCollectionsId", "TelevisionSeasonsId");
|
||||
|
||||
b.HasIndex("TelevisionSeasonsId");
|
||||
|
||||
b.ToTable("SimpleMediaCollectionSeasons");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"SimpleMediaCollectionTelevisionShow",
|
||||
b =>
|
||||
{
|
||||
b.Property<int>("SimpleMediaCollectionsId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<int>("TelevisionShowsId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasKey("SimpleMediaCollectionsId", "TelevisionShowsId");
|
||||
|
||||
b.HasIndex("TelevisionShowsId");
|
||||
|
||||
b.ToTable("SimpleMediaCollectionShows");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
@@ -484,21 +763,29 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionMediaCollection",
|
||||
"ErsatzTV.Core.Domain.MovieMediaItem",
|
||||
b =>
|
||||
{
|
||||
b.HasBaseType("ErsatzTV.Core.Domain.MediaCollection");
|
||||
b.HasBaseType("ErsatzTV.Core.Domain.MediaItem");
|
||||
|
||||
b.Property<int?>("SeasonNumber")
|
||||
b.Property<int>("MetadataId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("ShowTitle")
|
||||
.HasColumnType("TEXT");
|
||||
b.ToTable("Movies");
|
||||
});
|
||||
|
||||
b.HasIndex("ShowTitle", "SeasonNumber")
|
||||
.IsUnique();
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem",
|
||||
b =>
|
||||
{
|
||||
b.HasBaseType("ErsatzTV.Core.Domain.MediaItem");
|
||||
|
||||
b.ToTable("TelevisionMediaCollections");
|
||||
b.Property<int>("SeasonId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.HasIndex("SeasonId");
|
||||
|
||||
b.ToTable("TelevisionEpisodes");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
@@ -576,6 +863,23 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
b.ToTable("ProgramScheduleOneItems");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.LocalTelevisionShowSource",
|
||||
b =>
|
||||
{
|
||||
b.HasBaseType("ErsatzTV.Core.Domain.TelevisionShowSource");
|
||||
|
||||
b.Property<int>("MediaSourceId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b.Property<string>("Path")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b.HasIndex("MediaSourceId");
|
||||
|
||||
b.HasDiscriminator().HasValue("LocalTelevisionShowSource");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.Channel",
|
||||
b =>
|
||||
@@ -613,61 +917,31 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
.IsRequired();
|
||||
|
||||
b.OwnsOne(
|
||||
"ErsatzTV.Core.Domain.MediaMetadata",
|
||||
"Metadata",
|
||||
"ErsatzTV.Core.Domain.MediaItemStatistics",
|
||||
"Statistics",
|
||||
b1 =>
|
||||
{
|
||||
b1.Property<int>("MediaItemId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<DateTime?>("Aired")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("AudioCodec")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("ContentRating")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("Description")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("DisplayAspectRatio")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<TimeSpan>("Duration")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<int?>("EpisodeNumber")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<int>("Height")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<DateTime?>("LastWriteTime")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<int>("MediaType")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<string>("SampleAspectRatio")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<int?>("SeasonNumber")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<string>("SortTitle")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<int>("Source")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<string>("Subtitle")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("Title")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
b1.Property<string>("VideoCodec")
|
||||
.HasColumnType("TEXT");
|
||||
|
||||
@@ -685,9 +959,22 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
.HasForeignKey("MediaItemId");
|
||||
});
|
||||
|
||||
b.Navigation("Metadata");
|
||||
|
||||
b.Navigation("Source");
|
||||
|
||||
b.Navigation("Statistics");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.MovieMetadata",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.MovieMediaItem", "Movie")
|
||||
.WithOne("Metadata")
|
||||
.HasForeignKey("ErsatzTV.Core.Domain.MovieMetadata", "MovieId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Movie");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
@@ -770,12 +1057,6 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
"ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.MediaCollection", "MediaCollection")
|
||||
.WithMany()
|
||||
.HasForeignKey("MediaCollectionId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.Playout", "Playout")
|
||||
.WithMany("ProgramScheduleAnchors")
|
||||
.HasForeignKey("PlayoutId")
|
||||
@@ -793,13 +1074,7 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
"EnumeratorState",
|
||||
b1 =>
|
||||
{
|
||||
b1.Property<int>("PlayoutProgramScheduleAnchorPlayoutId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<int>("PlayoutProgramScheduleAnchorProgramScheduleId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<int>("PlayoutProgramScheduleAnchorMediaCollectionId")
|
||||
b1.Property<int>("PlayoutProgramScheduleAnchorId")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.Property<int>("Index")
|
||||
@@ -808,24 +1083,16 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
b1.Property<int>("Seed")
|
||||
.HasColumnType("INTEGER");
|
||||
|
||||
b1.HasKey(
|
||||
"PlayoutProgramScheduleAnchorPlayoutId",
|
||||
"PlayoutProgramScheduleAnchorProgramScheduleId",
|
||||
"PlayoutProgramScheduleAnchorMediaCollectionId");
|
||||
b1.HasKey("PlayoutProgramScheduleAnchorId");
|
||||
|
||||
b1.ToTable("PlayoutProgramScheduleItemAnchors");
|
||||
|
||||
b1.WithOwner()
|
||||
.HasForeignKey(
|
||||
"PlayoutProgramScheduleAnchorPlayoutId",
|
||||
"PlayoutProgramScheduleAnchorProgramScheduleId",
|
||||
"PlayoutProgramScheduleAnchorMediaCollectionId");
|
||||
.HasForeignKey("PlayoutProgramScheduleAnchorId");
|
||||
});
|
||||
|
||||
b.Navigation("EnumeratorState");
|
||||
|
||||
b.Navigation("MediaCollection");
|
||||
|
||||
b.Navigation("Playout");
|
||||
|
||||
b.Navigation("ProgramSchedule");
|
||||
@@ -855,9 +1122,7 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.MediaCollection", "MediaCollection")
|
||||
.WithMany()
|
||||
.HasForeignKey("MediaCollectionId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
.HasForeignKey("MediaCollectionId");
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.ProgramSchedule", "ProgramSchedule")
|
||||
.WithMany("Items")
|
||||
@@ -865,18 +1130,82 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionSeason", "TelevisionSeason")
|
||||
.WithMany()
|
||||
.HasForeignKey("TelevisionSeasonId");
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", "TelevisionShow")
|
||||
.WithMany()
|
||||
.HasForeignKey("TelevisionShowId");
|
||||
|
||||
b.Navigation("MediaCollection");
|
||||
|
||||
b.Navigation("ProgramSchedule");
|
||||
|
||||
b.Navigation("TelevisionSeason");
|
||||
|
||||
b.Navigation("TelevisionShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"MediaItemSimpleMediaCollection",
|
||||
"ErsatzTV.Core.Domain.TelevisionEpisodeMetadata",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.MediaItem", null)
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", "TelevisionEpisode")
|
||||
.WithOne("Metadata")
|
||||
.HasForeignKey("ErsatzTV.Core.Domain.TelevisionEpisodeMetadata", "TelevisionEpisodeId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("TelevisionEpisode");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionSeason",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", "TelevisionShow")
|
||||
.WithMany("Seasons")
|
||||
.HasForeignKey("TelevisionShowId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("TelevisionShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionShowMetadata",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", "TelevisionShow")
|
||||
.WithOne("Metadata")
|
||||
.HasForeignKey("ErsatzTV.Core.Domain.TelevisionShowMetadata", "TelevisionShowId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("TelevisionShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionShowSource",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", "TelevisionShow")
|
||||
.WithMany("Sources")
|
||||
.HasForeignKey("TelevisionShowId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("TelevisionShow");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"MovieMediaItemSimpleMediaCollection",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.MovieMediaItem", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("ItemsId")
|
||||
.HasForeignKey("MoviesId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
@@ -887,6 +1216,57 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"SimpleMediaCollectionTelevisionEpisodeMediaItem",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SimpleMediaCollectionsId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TelevisionEpisodesId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"SimpleMediaCollectionTelevisionSeason",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SimpleMediaCollectionsId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionSeason", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TelevisionSeasonsId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"SimpleMediaCollectionTelevisionShow",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("SimpleMediaCollectionsId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", null)
|
||||
.WithMany()
|
||||
.HasForeignKey("TelevisionShowsId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.SimpleMediaCollection",
|
||||
b =>
|
||||
@@ -899,16 +1279,35 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionMediaCollection",
|
||||
"ErsatzTV.Core.Domain.MovieMediaItem",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.MediaCollection", null)
|
||||
b.HasOne("ErsatzTV.Core.Domain.MediaItem", null)
|
||||
.WithOne()
|
||||
.HasForeignKey("ErsatzTV.Core.Domain.TelevisionMediaCollection", "Id")
|
||||
.HasForeignKey("ErsatzTV.Core.Domain.MovieMediaItem", "Id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.MediaItem", null)
|
||||
.WithOne()
|
||||
.HasForeignKey("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", "Id")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.HasOne("ErsatzTV.Core.Domain.TelevisionSeason", "Season")
|
||||
.WithMany("Episodes")
|
||||
.HasForeignKey("SeasonId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("Season");
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.LocalMediaSource",
|
||||
b =>
|
||||
@@ -975,6 +1374,19 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
.IsRequired();
|
||||
});
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.LocalTelevisionShowSource",
|
||||
b =>
|
||||
{
|
||||
b.HasOne("ErsatzTV.Core.Domain.LocalMediaSource", "MediaSource")
|
||||
.WithMany()
|
||||
.HasForeignKey("MediaSourceId")
|
||||
.OnDelete(DeleteBehavior.Cascade)
|
||||
.IsRequired();
|
||||
|
||||
b.Navigation("MediaSource");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ErsatzTV.Core.Domain.Channel", b => { b.Navigation("Playouts"); });
|
||||
|
||||
modelBuilder.Entity(
|
||||
@@ -995,6 +1407,23 @@ namespace ErsatzTV.Infrastructure.Migrations
|
||||
b.Navigation("Playouts");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionSeason", b => { b.Navigation("Episodes"); });
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.TelevisionShow",
|
||||
b =>
|
||||
{
|
||||
b.Navigation("Metadata");
|
||||
|
||||
b.Navigation("Seasons");
|
||||
|
||||
b.Navigation("Sources");
|
||||
});
|
||||
|
||||
modelBuilder.Entity("ErsatzTV.Core.Domain.MovieMediaItem", b => { b.Navigation("Metadata"); });
|
||||
|
||||
modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", b => { b.Navigation("Metadata"); });
|
||||
|
||||
modelBuilder.Entity(
|
||||
"ErsatzTV.Core.Domain.PlexMediaSource",
|
||||
b =>
|
||||
|
||||
Reference in New Issue
Block a user