// using System; using ErsatzTV.Infrastructure.Data; using ErsatzTV.Infrastructure.Sqlite.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace ErsatzTV.Infrastructure.Sqlite.Migrations { [DbContext(typeof(TvContext))] [Migration("20210212105010_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) { #pragma warning disable 612, 618 modelBuilder .HasAnnotation("ProductVersion", "5.0.3"); modelBuilder.Entity("ErsatzTV.Core.AggregateModels.GenericIntegerId", b => { b.Property("Id") .HasColumnType("INTEGER"); b.ToTable("GenericIntegerIds"); }); modelBuilder.Entity("ErsatzTV.Core.AggregateModels.MediaCollectionSummary", b => { b.Property("Id") .HasColumnType("INTEGER"); b.Property("IsSimple") .HasColumnType("INTEGER"); b.Property("ItemCount") .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.ToTable("MediaCollectionSummaries"); }); 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("Channels"); }); 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("ConfigElements"); }); 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("FFmpegProfiles"); }); 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("MediaCollections"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("LastWriteTime") .HasColumnType("TEXT"); b.Property("MediaSourceId") .HasColumnType("INTEGER"); b.Property("Path") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("MediaSourceId"); b.ToTable("MediaItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaSource", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.Property("SourceType") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("Name") .IsUnique(); b.ToTable("MediaSources"); }); 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("Playouts"); }); 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("PlayoutItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", b => { b.Property("PlayoutId") .HasColumnType("INTEGER"); b.Property("ProgramScheduleId") .HasColumnType("INTEGER"); b.Property("MediaCollectionId") .HasColumnType("INTEGER"); b.HasKey("PlayoutId", "ProgramScheduleId", "MediaCollectionId"); b.HasIndex("MediaCollectionId"); b.HasIndex("ProgramScheduleId"); b.ToTable("PlayoutProgramScheduleItemAnchors"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSourceConnection", 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("PlexMediaSourceConnections"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSourceLibrary", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Key") .HasColumnType("TEXT"); b.Property("MediaType") .HasColumnType("INTEGER"); b.Property("Name") .HasColumnType("TEXT"); b.Property("PlexMediaSourceId") .HasColumnType("INTEGER"); b.HasKey("Id"); b.HasIndex("PlexMediaSourceId"); b.ToTable("PlexMediaSourceLibraries"); }); 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("ProgramSchedules"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItem", b => { b.Property("Id") .ValueGeneratedOnAdd() .HasColumnType("INTEGER"); b.Property("Index") .HasColumnType("INTEGER"); b.Property("MediaCollectionId") .HasColumnType("INTEGER"); b.Property("ProgramScheduleId") .HasColumnType("INTEGER"); b.Property("StartTime") .HasColumnType("TEXT"); b.HasKey("Id"); b.HasIndex("MediaCollectionId"); b.HasIndex("ProgramScheduleId"); b.ToTable("ProgramScheduleItems"); }); 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("Resolutions"); }); modelBuilder.Entity("MediaItemSimpleMediaCollection", b => { b.Property("ItemsId") .HasColumnType("INTEGER"); b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); b.HasKey("ItemsId", "SimpleMediaCollectionsId"); b.HasIndex("SimpleMediaCollectionsId"); b.ToTable("MediaItemSimpleMediaCollection"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.SimpleMediaCollection", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaCollection"); b.ToTable("SimpleMediaCollections"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionMediaCollection", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaCollection"); b.Property("SeasonNumber") .HasColumnType("INTEGER"); b.Property("ShowTitle") .HasColumnType("TEXT"); b.HasIndex("ShowTitle", "SeasonNumber") .IsUnique(); b.ToTable("TelevisionMediaCollections"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.LocalMediaSource", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaSource"); b.Property("Folder") .HasColumnType("TEXT"); b.Property("MediaType") .HasColumnType("INTEGER"); b.ToTable("LocalMediaSources"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaSource"); b.Property("ClientIdentifier") .HasColumnType("TEXT"); b.Property("ProductVersion") .HasColumnType("TEXT"); b.ToTable("PlexMediaSources"); }); 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("ProgramScheduleDurationItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemFlood", b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.ToTable("ProgramScheduleFloodItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.Property("Count") .HasColumnType("INTEGER"); b.ToTable("ProgramScheduleMultipleItems"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemOne", b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.ToTable("ProgramScheduleOneItems"); }); 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.FFmpegProfile", b => { b.HasOne("ErsatzTV.Core.Domain.Resolution", "Resolution") .WithMany() .HasForeignKey("ResolutionId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("Resolution"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => { b.HasOne("ErsatzTV.Core.Domain.MediaSource", "Source") .WithMany() .HasForeignKey("MediaSourceId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.OwnsOne("ErsatzTV.Core.Domain.MediaMetadata", "Metadata", b1 => { b1.Property("MediaItemId") .HasColumnType("INTEGER"); b1.Property("Aired") .HasColumnType("TEXT"); b1.Property("AudioCodec") .HasColumnType("TEXT"); b1.Property("ContentRating") .HasColumnType("TEXT"); b1.Property("Description") .HasColumnType("TEXT"); b1.Property("DisplayAspectRatio") .HasColumnType("TEXT"); b1.Property("Duration") .HasColumnType("TEXT"); b1.Property("EpisodeNumber") .HasColumnType("INTEGER"); b1.Property("Height") .HasColumnType("INTEGER"); b1.Property("MediaType") .HasColumnType("INTEGER"); b1.Property("SampleAspectRatio") .HasColumnType("TEXT"); b1.Property("SeasonNumber") .HasColumnType("INTEGER"); b1.Property("Subtitle") .HasColumnType("TEXT"); b1.Property("Title") .HasColumnType("TEXT"); b1.Property("VideoCodec") .HasColumnType("TEXT"); b1.Property("VideoScanType") .HasColumnType("INTEGER"); b1.Property("Width") .HasColumnType("INTEGER"); b1.HasKey("MediaItemId"); b1.ToTable("MediaItems"); b1.WithOwner() .HasForeignKey("MediaItemId"); }); b.Navigation("Metadata"); b.Navigation("Source"); }); 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("Playouts"); 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.MediaCollection", "MediaCollection") .WithMany() .HasForeignKey("MediaCollectionId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); 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("PlayoutProgramScheduleAnchorPlayoutId") .HasColumnType("INTEGER"); b1.Property("PlayoutProgramScheduleAnchorProgramScheduleId") .HasColumnType("INTEGER"); b1.Property("PlayoutProgramScheduleAnchorMediaCollectionId") .HasColumnType("INTEGER"); b1.Property("Index") .HasColumnType("INTEGER"); b1.Property("Seed") .HasColumnType("INTEGER"); b1.HasKey("PlayoutProgramScheduleAnchorPlayoutId", "PlayoutProgramScheduleAnchorProgramScheduleId", "PlayoutProgramScheduleAnchorMediaCollectionId"); b1.ToTable("PlayoutProgramScheduleItemAnchors"); b1.WithOwner() .HasForeignKey("PlayoutProgramScheduleAnchorPlayoutId", "PlayoutProgramScheduleAnchorProgramScheduleId", "PlayoutProgramScheduleAnchorMediaCollectionId"); }); b.Navigation("EnumeratorState"); b.Navigation("MediaCollection"); b.Navigation("Playout"); b.Navigation("ProgramSchedule"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSourceConnection", b => { b.HasOne("ErsatzTV.Core.Domain.PlexMediaSource", null) .WithMany("Connections") .HasForeignKey("PlexMediaSourceId"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSourceLibrary", b => { b.HasOne("ErsatzTV.Core.Domain.PlexMediaSource", null) .WithMany("Libraries") .HasForeignKey("PlexMediaSourceId"); }); modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItem", b => { b.HasOne("ErsatzTV.Core.Domain.MediaCollection", "MediaCollection") .WithMany() .HasForeignKey("MediaCollectionId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.ProgramSchedule", "ProgramSchedule") .WithMany("Items") .HasForeignKey("ProgramScheduleId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.Navigation("MediaCollection"); b.Navigation("ProgramSchedule"); }); modelBuilder.Entity("MediaItemSimpleMediaCollection", b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithMany() .HasForeignKey("ItemsId") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null) .WithMany() .HasForeignKey("SimpleMediaCollectionsId") .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.TelevisionMediaCollection", b => { b.HasOne("ErsatzTV.Core.Domain.MediaCollection", null) .WithOne() .HasForeignKey("ErsatzTV.Core.Domain.TelevisionMediaCollection", "Id") .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); 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.Channel", b => { b.Navigation("Playouts"); }); 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.PlexMediaSource", b => { b.Navigation("Connections"); b.Navigation("Libraries"); }); #pragma warning restore 612, 618 } } }