// using System; using ErsatzTV.Infrastructure.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace ErsatzTV.Infrastructure.Migrations { [DbContext(typeof(TvContext))] [Migration("20210226110438_ProgramSchedule_CollectionAndMediaItem")] partial class ProgramSchedule_CollectionAndMediaItem { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "5.0.3"); modelBuilder.Entity("ErsatzTV.Core.Domain.Channel", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("FFmpegProfileId") .HasColumnType("INTEGER"); b.Property("Logo") .HasColumnType("TEXT"); b.Property("Name") .HasColumnType("TEXT"); b.Property("Number") .HasColumnType("INTEGER"); b.Property("StreamingMode") .HasColumnType("INTEGER"); b.Property("UniqueId") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("FFmpegProfileId"); b.HasIndex("Number") .IsUnique(); b.ToTable("Channel"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Collection", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.HasKey("Id"); b.ToTable("Collection"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.CollectionItem", b => { b.Property("CollectionId") .HasColumnType("INTEGER"); b.Property("MediaItemId") .HasColumnType("INTEGER"); b.HasKey("CollectionId", "MediaItemId"); b.HasIndex("MediaItemId"); b.ToTable("CollectionItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ConfigElement", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Key") .HasColumnType("TEXT"); b.Property("Value") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("Key") .IsUnique(); b.ToTable("ConfigElement"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.FFmpegProfile", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("AudioBitrate") .HasColumnType("INTEGER"); b.Property("AudioBufferSize") .HasColumnType("INTEGER"); b.Property("AudioChannels") .HasColumnType("INTEGER"); b.Property("AudioCodec") .HasColumnType("TEXT"); b.Property("AudioSampleRate") .HasColumnType("INTEGER"); b.Property("AudioVolume") .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.Property("NormalizeAudio") .HasColumnType("INTEGER"); b.Property("NormalizeAudioCodec") .HasColumnType("INTEGER"); b.Property("NormalizeResolution") .HasColumnType("INTEGER"); b.Property("NormalizeVideoCodec") .HasColumnType("INTEGER"); b.Property("ResolutionId") .HasColumnType("INTEGER"); b.Property("ThreadCount") .HasColumnType("INTEGER"); b.Property("Transcode") .HasColumnType("INTEGER"); b.Property("VideoBitrate") .HasColumnType("INTEGER"); b.Property("VideoBufferSize") .HasColumnType("INTEGER"); b.Property("VideoCodec") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("ResolutionId"); b.ToTable("FFmpegProfile"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Library", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("LastScan") .HasColumnType("TEXT"); b.Property("MediaKind") .HasColumnType("INTEGER"); b.Property("MediaSourceId") .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("MediaSourceId"); b.ToTable("Library"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.LibraryPath", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("LibraryId") .HasColumnType("INTEGER"); b.Property("Path") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("LibraryId"); b.ToTable("LibraryPath"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaCollection", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("Name") .IsUnique(); b.ToTable("MediaCollection"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("LastWriteTime") .HasColumnType("TEXT"); b.Property("LibraryPathId") .HasColumnType("INTEGER"); b.Property("Path") .HasColumnType("TEXT"); b.Property("Poster") .HasColumnType("TEXT"); b.Property("PosterLastWriteTime") .HasColumnType("TEXT"); b.Property("TelevisionEpisodeId") .HasColumnType("INTEGER"); b.Property("TelevisionSeasonId") .HasColumnType("INTEGER"); b.Property("TelevisionShowId") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("LibraryPathId"); b.ToTable("MediaItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaSource", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.HasKey("Id"); b.ToTable("MediaSource"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MovieMetadata", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("ContentRating") .HasColumnType("TEXT"); b.Property("LastWriteTime") .HasColumnType("TEXT"); b.Property("MovieId") .HasColumnType("INTEGER"); b.Property("Outline") .HasColumnType("TEXT"); b.Property("Plot") .HasColumnType("TEXT"); b.Property("Premiered") .HasColumnType("TEXT"); b.Property("SortTitle") .HasColumnType("TEXT"); b.Property("Source") .HasColumnType("INTEGER"); b.Property("Tagline") .HasColumnType("TEXT"); b.Property("Title") .HasColumnType("TEXT"); b.Property("Year") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("MovieId") .IsUnique(); b.ToTable("MovieMetadata"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Playout", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("ChannelId") .HasColumnType("INTEGER"); b.Property("ProgramScheduleId") .HasColumnType("INTEGER"); b.Property("ProgramSchedulePlayoutType") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("ChannelId"); b.HasIndex("ProgramScheduleId"); b.ToTable("Playout"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Finish") .HasColumnType("TEXT"); b.Property("MediaItemId") .HasColumnType("INTEGER"); b.Property("PlayoutId") .HasColumnType("INTEGER"); b.Property("Start") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("MediaItemId"); b.HasIndex("PlayoutId"); b.ToTable("PlayoutItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("CollectionId") .HasColumnType("INTEGER"); b.Property("CollectionType") .HasColumnType("INTEGER"); b.Property("MediaItemId") .HasColumnType("INTEGER"); b.Property("NewCollectionId") .HasColumnType("INTEGER"); b.Property("PlayoutId") .HasColumnType("INTEGER"); b.Property("ProgramScheduleId") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("MediaItemId"); b.HasIndex("NewCollectionId"); b.HasIndex("PlayoutId"); b.HasIndex("ProgramScheduleId"); b.ToTable("PlayoutProgramScheduleAnchor"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexConnection", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("IsActive") .HasColumnType("INTEGER"); b.Property("PlexMediaSourceId") .HasColumnType("INTEGER"); b.Property("Uri") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("PlexMediaSourceId"); b.ToTable("PlexConnection"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaItemPart", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Duration") .HasColumnType("INTEGER"); b.Property("File") .HasColumnType("TEXT"); b.Property("Key") .HasColumnType("TEXT"); b.Property("PlexId") .HasColumnType("INTEGER"); b.Property("Size") .HasColumnType("INTEGER"); b.HasKey("Id"); b.ToTable("PlexMediaItemPart"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramSchedule", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("MediaCollectionPlaybackOrder") .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("Name") .IsUnique(); b.ToTable("ProgramSchedule"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("CollectionId") .HasColumnType("INTEGER"); b.Property("CollectionType") .HasColumnType("INTEGER"); b.Property("Index") .HasColumnType("INTEGER"); b.Property("MediaCollectionId") .HasColumnType("INTEGER"); b.Property("MediaItemId") .HasColumnType("INTEGER"); b.Property("ProgramScheduleId") .HasColumnType("INTEGER"); b.Property("StartTime") .HasColumnType("TEXT"); b.Property("TelevisionSeasonId") .HasColumnType("INTEGER"); b.Property("TelevisionShowId") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("CollectionId"); b.HasIndex("MediaCollectionId"); b.HasIndex("MediaItemId"); b.HasIndex("ProgramScheduleId"); b.HasIndex("TelevisionSeasonId"); b.HasIndex("TelevisionShowId"); b.ToTable("ProgramScheduleItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Resolution", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Height") .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.Property("Width") .HasColumnType("INTEGER"); b.HasKey("Id"); b.ToTable("Resolution"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMetadata", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Aired") .HasColumnType("TEXT"); b.Property("Episode") .HasColumnType("INTEGER"); b.Property("LastWriteTime") .HasColumnType("TEXT"); b.Property("Plot") .HasColumnType("TEXT"); b.Property("Season") .HasColumnType("INTEGER"); b.Property("SortTitle") .HasColumnType("TEXT"); b.Property("Source") .HasColumnType("INTEGER"); b.Property("TelevisionEpisodeId") .HasColumnType("INTEGER"); b.Property("Title") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("TelevisionEpisodeId") .IsUnique(); b.ToTable("TelevisionEpisodeMetadata"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionSeason", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Number") .HasColumnType("INTEGER"); b.Property("Path") .HasColumnType("TEXT"); b.Property("Poster") .HasColumnType("TEXT"); b.Property("PosterLastWriteTime") .HasColumnType("TEXT"); b.Property("TelevisionShowId") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("TelevisionShowId"); b.ToTable("TelevisionSeason"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShow", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Poster") .HasColumnType("TEXT"); b.Property("PosterLastWriteTime") .HasColumnType("TEXT"); b.HasKey("Id"); b.ToTable("TelevisionShow"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShowMetadata", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("LastWriteTime") .HasColumnType("TEXT"); b.Property("Plot") .HasColumnType("TEXT"); b.Property("SortTitle") .HasColumnType("TEXT"); b.Property("Source") .HasColumnType("INTEGER"); b.Property("TelevisionShowId") .HasColumnType("INTEGER"); b.Property("Title") .HasColumnType("TEXT"); b.Property("Year") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("TelevisionShowId") .IsUnique(); b.ToTable("TelevisionShowMetadata"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShowSource", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Discriminator") .IsRequired() .HasColumnType("TEXT"); b.Property("TelevisionShowId") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("TelevisionShowId"); b.ToTable("TelevisionShowSource"); b.HasDiscriminator("Discriminator").HasValue("TelevisionShowSource"); }); modelBuilder.Entity("MovieSimpleMediaCollection", b => { b.Property("MoviesId") .HasColumnType("INTEGER"); b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); b.HasKey("MoviesId", "SimpleMediaCollectionsId"); b.HasIndex("SimpleMediaCollectionsId"); b.ToTable("SimpleMediaCollectionMovie"); }); modelBuilder.Entity("SimpleMediaCollectionTelevisionEpisodeMediaItem", b => { b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); b.Property("TelevisionEpisodesId") .HasColumnType("INTEGER"); b.HasKey("SimpleMediaCollectionsId", "TelevisionEpisodesId"); b.HasIndex("TelevisionEpisodesId"); b.ToTable("SimpleMediaCollectionEpisode"); }); modelBuilder.Entity("SimpleMediaCollectionTelevisionSeason", b => { b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); b.Property("TelevisionSeasonsId") .HasColumnType("INTEGER"); b.HasKey("SimpleMediaCollectionsId", "TelevisionSeasonsId"); b.HasIndex("TelevisionSeasonsId"); b.ToTable("SimpleMediaCollectionSeason"); }); modelBuilder.Entity("SimpleMediaCollectionTelevisionShow", b => { b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); b.Property("TelevisionShowsId") .HasColumnType("INTEGER"); b.HasKey("SimpleMediaCollectionsId", "TelevisionShowsId"); b.HasIndex("TelevisionShowsId"); b.ToTable("SimpleMediaCollectionShow"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.LocalLibrary", b => { b.HasBaseType("ErsatzTV.Core.Domain.Library"); b.ToTable("LocalLibrary"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexLibrary", b => { b.HasBaseType("ErsatzTV.Core.Domain.Library"); b.Property("Key") .HasColumnType("TEXT"); b.Property("ShouldSyncItems") .HasColumnType("INTEGER"); b.ToTable("PlexLibrary"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.SimpleMediaCollection", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaCollection"); b.ToTable("SimpleMediaCollection"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Episode", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); b.Property("SeasonId") .HasColumnType("INTEGER"); b.HasIndex("SeasonId"); b.ToTable("Episode"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Movie", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); b.Property("MetadataId") .HasColumnType("INTEGER"); b.ToTable("Movie"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); b.Property("ShowId") .HasColumnType("INTEGER"); b.HasIndex("ShowId"); b.ToTable("Season"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Show", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); b.ToTable("Show"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); b.Property("SeasonId") .HasColumnType("INTEGER"); b.HasIndex("SeasonId"); b.ToTable("TelevisionEpisode"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.LocalMediaSource", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaSource"); b.ToTable("LocalMediaSource"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaSource"); b.Property("ClientIdentifier") .HasColumnType("TEXT"); b.Property("ProductVersion") .HasColumnType("TEXT"); b.Property("ServerName") .HasColumnType("TEXT"); b.ToTable("PlexMediaSource"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemDuration", b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.Property("OfflineTail") .HasColumnType("INTEGER"); b.Property("PlayoutDuration") .HasColumnType("TEXT"); b.ToTable("ProgramScheduleDurationItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemFlood", b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.ToTable("ProgramScheduleFloodItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.Property("Count") .HasColumnType("INTEGER"); b.ToTable("ProgramScheduleMultipleItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemOne", b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.ToTable("ProgramScheduleOneItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.LocalTelevisionShowSource", b => { b.HasBaseType("ErsatzTV.Core.Domain.TelevisionShowSource"); b.Property("MediaSourceId") .HasColumnType("INTEGER"); b.Property("Path") .HasColumnType("TEXT"); b.HasIndex("MediaSourceId"); b.HasDiscriminator().HasValue("LocalTelevisionShowSource"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMovie", b => { b.HasBaseType("ErsatzTV.Core.Domain.Movie"); b.Property("Key") .HasColumnType("TEXT"); b.Property("PartId") .HasColumnType("INTEGER"); b.HasIndex("PartId"); b.ToTable("PlexMovie"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Channel", b => { b.HasOne("ErsatzTV.Core.Domain.FFmpegProfile", "FFmpegProfile") .WithMany() .HasForeignKey("FFmpegProfileId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("FFmpegProfile"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.CollectionItem", b => { b.HasOne("ErsatzTV.Core.Domain.Collection", "Collection") .WithMany("CollectionItems") .HasForeignKey("CollectionId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem") .WithMany("CollectionItems") .HasForeignKey("MediaItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Collection"); b.Navigation("MediaItem"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.FFmpegProfile", b => { b.HasOne("ErsatzTV.Core.Domain.Resolution", "Resolution") .WithMany() .HasForeignKey("ResolutionId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Resolution"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Library", b => { b.HasOne("ErsatzTV.Core.Domain.MediaSource", "MediaSource") .WithMany("Libraries") .HasForeignKey("MediaSourceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MediaSource"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.LibraryPath", b => { b.HasOne("ErsatzTV.Core.Domain.Library", "Library") .WithMany("Paths") .HasForeignKey("LibraryId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Library"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => { b.HasOne("ErsatzTV.Core.Domain.LibraryPath", "LibraryPath") .WithMany("MediaItems") .HasForeignKey("LibraryPathId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.OwnsOne("ErsatzTV.Core.Domain.MediaItemStatistics", "Statistics", b1 => { b1.Property("MediaItemId") .HasColumnType("INTEGER"); b1.Property("AudioCodec") .HasColumnType("TEXT"); b1.Property("DisplayAspectRatio") .HasColumnType("TEXT"); b1.Property("Duration") .HasColumnType("TEXT"); b1.Property("Height") .HasColumnType("INTEGER"); b1.Property("LastWriteTime") .HasColumnType("TEXT"); b1.Property("SampleAspectRatio") .HasColumnType("TEXT"); b1.Property("VideoCodec") .HasColumnType("TEXT"); b1.Property("VideoScanType") .HasColumnType("INTEGER"); b1.Property("Width") .HasColumnType("INTEGER"); b1.HasKey("MediaItemId"); b1.ToTable("MediaItem"); b1.WithOwner() .HasForeignKey("MediaItemId"); }); b.Navigation("LibraryPath"); b.Navigation("Statistics"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MovieMetadata", b => { b.HasOne("ErsatzTV.Core.Domain.Movie", "Movie") .WithOne("Metadata") .HasForeignKey("ErsatzTV.Core.Domain.MovieMetadata", "MovieId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Movie"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Playout", b => { b.HasOne("ErsatzTV.Core.Domain.Channel", "Channel") .WithMany("Playouts") .HasForeignKey("ChannelId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.ProgramSchedule", "ProgramSchedule") .WithMany("Playouts") .HasForeignKey("ProgramScheduleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.OwnsOne("ErsatzTV.Core.Domain.PlayoutAnchor", "Anchor", b1 => { b1.Property("PlayoutId") .HasColumnType("INTEGER"); b1.Property("NextScheduleItemId") .HasColumnType("INTEGER"); b1.Property("NextStart") .HasColumnType("TEXT"); b1.HasKey("PlayoutId"); b1.HasIndex("NextScheduleItemId"); b1.ToTable("Playout"); b1.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", "NextScheduleItem") .WithMany() .HasForeignKey("NextScheduleItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b1.WithOwner() .HasForeignKey("PlayoutId"); b1.Navigation("NextScheduleItem"); }); b.Navigation("Anchor"); b.Navigation("Channel"); b.Navigation("ProgramSchedule"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutItem", b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem") .WithMany() .HasForeignKey("MediaItemId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.Playout", "Playout") .WithMany("Items") .HasForeignKey("PlayoutId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MediaItem"); b.Navigation("Playout"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem") .WithMany() .HasForeignKey("MediaItemId"); b.HasOne("ErsatzTV.Core.Domain.Collection", "Collection") .WithMany() .HasForeignKey("NewCollectionId"); b.HasOne("ErsatzTV.Core.Domain.Playout", "Playout") .WithMany("ProgramScheduleAnchors") .HasForeignKey("PlayoutId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.ProgramSchedule", "ProgramSchedule") .WithMany() .HasForeignKey("ProgramScheduleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.OwnsOne("ErsatzTV.Core.Domain.MediaCollectionEnumeratorState", "EnumeratorState", b1 => { b1.Property("PlayoutProgramScheduleAnchorId") .HasColumnType("INTEGER"); b1.Property("Index") .HasColumnType("INTEGER"); b1.Property("Seed") .HasColumnType("INTEGER"); b1.HasKey("PlayoutProgramScheduleAnchorId"); b1.ToTable("PlayoutProgramScheduleAnchor"); b1.WithOwner() .HasForeignKey("PlayoutProgramScheduleAnchorId"); }); b.Navigation("Collection"); b.Navigation("EnumeratorState"); b.Navigation("MediaItem"); b.Navigation("Playout"); b.Navigation("ProgramSchedule"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexConnection", b => { b.HasOne("ErsatzTV.Core.Domain.PlexMediaSource", "PlexMediaSource") .WithMany("Connections") .HasForeignKey("PlexMediaSourceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("PlexMediaSource"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItem", b => { b.HasOne("ErsatzTV.Core.Domain.Collection", "Collection") .WithMany() .HasForeignKey("CollectionId"); b.HasOne("ErsatzTV.Core.Domain.MediaCollection", "MediaCollection") .WithMany() .HasForeignKey("MediaCollectionId"); b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem") .WithMany() .HasForeignKey("MediaItemId"); b.HasOne("ErsatzTV.Core.Domain.ProgramSchedule", "ProgramSchedule") .WithMany("Items") .HasForeignKey("ProgramScheduleId") .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("Collection"); b.Navigation("MediaCollection"); b.Navigation("MediaItem"); b.Navigation("ProgramSchedule"); b.Navigation("TelevisionSeason"); b.Navigation("TelevisionShow"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMetadata", b => { 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("MovieSimpleMediaCollection", b => { b.HasOne("ErsatzTV.Core.Domain.Movie", null) .WithMany() .HasForeignKey("MoviesId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null) .WithMany() .HasForeignKey("SimpleMediaCollectionsId") .OnDelete(DeleteBehavior.Cascade) .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.LocalLibrary", b => { b.HasOne("ErsatzTV.Core.Domain.Library", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.LocalLibrary", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexLibrary", b => { b.HasOne("ErsatzTV.Core.Domain.Library", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.PlexLibrary", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.SimpleMediaCollection", b => { b.HasOne("ErsatzTV.Core.Domain.MediaCollection", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.SimpleMediaCollection", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Episode", b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.Episode", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.Season", "Season") .WithMany("Episodes") .HasForeignKey("SeasonId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Season"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Movie", b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.Movie", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.Season", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.Show", "Show") .WithMany("Seasons") .HasForeignKey("ShowId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Show"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Show", b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.Show", "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 => { b.HasOne("ErsatzTV.Core.Domain.MediaSource", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.LocalMediaSource", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => { b.HasOne("ErsatzTV.Core.Domain.MediaSource", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.PlexMediaSource", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemDuration", b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.ProgramScheduleItemDuration", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemFlood", b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.ProgramScheduleItemFlood", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemOne", b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.ProgramScheduleItemOne", "Id") .OnDelete(DeleteBehavior.Cascade) .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.PlexMovie", b => { b.HasOne("ErsatzTV.Core.Domain.Movie", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.PlexMovie", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.PlexMediaItemPart", "Part") .WithMany() .HasForeignKey("PartId"); b.Navigation("Part"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Channel", b => { b.Navigation("Playouts"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Collection", b => { b.Navigation("CollectionItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Library", b => { b.Navigation("Paths"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.LibraryPath", b => { b.Navigation("MediaItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => { b.Navigation("CollectionItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaSource", b => { b.Navigation("Libraries"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Playout", b => { b.Navigation("Items"); b.Navigation("ProgramScheduleAnchors"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramSchedule", b => { b.Navigation("Items"); 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.Movie", b => { b.Navigation("Metadata"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b => { b.Navigation("Episodes"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.Show", b => { b.Navigation("Seasons"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", b => { b.Navigation("Metadata"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => { b.Navigation("Connections"); }); #pragma warning restore 612, 618 } } }