diff --git a/ErsatzTV.Core/Domain/MediaItem/MediaItem.cs b/ErsatzTV.Core/Domain/MediaItem/MediaItem.cs index 0b275d1db..92867d067 100644 --- a/ErsatzTV.Core/Domain/MediaItem/MediaItem.cs +++ b/ErsatzTV.Core/Domain/MediaItem/MediaItem.cs @@ -12,10 +12,7 @@ namespace ErsatzTV.Core.Domain public int LibraryPathId { get; set; } public LibraryPath LibraryPath { get; set; } - public string Path { get; set; } - public string Poster { get; set; } - public DateTime? PosterLastWriteTime { get; set; } - + // temporary fields to help migrations... public int TelevisionShowId { get; set; } public int TelevisionSeasonId { get; set; } @@ -23,5 +20,8 @@ namespace ErsatzTV.Core.Domain public List Collections { get; set; } public List CollectionItems { get; set; } + public string Path { get; set; } + public string Poster { get; set; } + public DateTime? PosterLastWriteTime { get; set; } } } diff --git a/ErsatzTV.Core/Domain/Metadata/EpisodeMetadata.cs b/ErsatzTV.Core/Domain/Metadata/EpisodeMetadata.cs index 24121dc0a..61fe29c3f 100644 --- a/ErsatzTV.Core/Domain/Metadata/EpisodeMetadata.cs +++ b/ErsatzTV.Core/Domain/Metadata/EpisodeMetadata.cs @@ -4,7 +4,7 @@ { public string Outline { get; set; } public string Plot { get; set; } - public string Tagline { get; set; } + public string Tagline { get; set; } public int EpisodeId { get; set; } public Episode Episode { get; set; } } diff --git a/ErsatzTV.Core/Domain/Metadata/Metadata.cs b/ErsatzTV.Core/Domain/Metadata/Metadata.cs index 7138173c6..ca0565bb8 100644 --- a/ErsatzTV.Core/Domain/Metadata/Metadata.cs +++ b/ErsatzTV.Core/Domain/Metadata/Metadata.cs @@ -11,6 +11,6 @@ namespace ErsatzTV.Core.Domain public string SortTitle { get; set; } public DateTime? ReleaseDate { get; set; } public DateTime DateAdded { get; set; } - public DateTime DateUpdated { get; set; } + public DateTime DateUpdated { get; set; } } } diff --git a/ErsatzTV.Core/Domain/Metadata/MovieMetadata.cs b/ErsatzTV.Core/Domain/Metadata/MovieMetadata.cs index 04372bffb..6c57e1dce 100644 --- a/ErsatzTV.Core/Domain/Metadata/MovieMetadata.cs +++ b/ErsatzTV.Core/Domain/Metadata/MovieMetadata.cs @@ -4,7 +4,7 @@ { public string Outline { get; set; } public string Plot { get; set; } - public string Tagline { get; set; } + public string Tagline { get; set; } public int MovieId { get; set; } public Movie Movie { get; set; } } diff --git a/ErsatzTV.Core/Domain/Metadata/ShowMetadata.cs b/ErsatzTV.Core/Domain/Metadata/ShowMetadata.cs index f9b0141cd..855ba29d3 100644 --- a/ErsatzTV.Core/Domain/Metadata/ShowMetadata.cs +++ b/ErsatzTV.Core/Domain/Metadata/ShowMetadata.cs @@ -4,7 +4,7 @@ { public string Outline { get; set; } public string Plot { get; set; } - public string Tagline { get; set; } + public string Tagline { get; set; } public int ShowId { get; set; } public Show Show { get; set; } } diff --git a/ErsatzTV.Core/Domain/PlayoutProgramScheduleAnchor.cs b/ErsatzTV.Core/Domain/PlayoutProgramScheduleAnchor.cs index f694020f6..e09bcbb1c 100644 --- a/ErsatzTV.Core/Domain/PlayoutProgramScheduleAnchor.cs +++ b/ErsatzTV.Core/Domain/PlayoutProgramScheduleAnchor.cs @@ -7,9 +7,12 @@ public Playout Playout { get; set; } public int ProgramScheduleId { get; set; } public ProgramSchedule ProgramSchedule { get; set; } + public ProgramScheduleItemCollectionType CollectionType { get; set; } + // TODO: remove this public int CollectionId { get; set; } + // TODO: rename this public int? NewCollectionId { get; set; } public Collection Collection { get; set; } diff --git a/ErsatzTV.Core/Domain/ProgramScheduleItem.cs b/ErsatzTV.Core/Domain/ProgramScheduleItem.cs index abcddb516..f51e45855 100644 --- a/ErsatzTV.Core/Domain/ProgramScheduleItem.cs +++ b/ErsatzTV.Core/Domain/ProgramScheduleItem.cs @@ -8,7 +8,9 @@ namespace ErsatzTV.Core.Domain public int Index { get; set; } public StartType StartType => StartTime.HasValue ? StartType.Fixed : StartType.Dynamic; public TimeSpan? StartTime { get; set; } + public ProgramScheduleItemCollectionType CollectionType { get; set; } + // TODO: remove these public int? MediaCollectionId { get; set; } public MediaCollection MediaCollection { get; set; } @@ -18,7 +20,7 @@ namespace ErsatzTV.Core.Domain public TelevisionSeason TelevisionSeason { get; set; } public int ProgramScheduleId { get; set; } public ProgramSchedule ProgramSchedule { get; set; } - + public int? CollectionId { get; set; } public Collection Collection { get; set; } public int? MediaItemId { get; set; } diff --git a/ErsatzTV.Core/Domain/TelevisionShowMetadata.cs b/ErsatzTV.Core/Domain/TelevisionShowMetadata.cs index 4d4faeaa4..fcbf5c39c 100644 --- a/ErsatzTV.Core/Domain/TelevisionShowMetadata.cs +++ b/ErsatzTV.Core/Domain/TelevisionShowMetadata.cs @@ -6,7 +6,9 @@ namespace ErsatzTV.Core.Domain { public int Id { get; set; } public int TelevisionShowId { get; set; } + public TelevisionShow TelevisionShow { get; set; } + // public int ShowId { get; set; } // public Show Show { get; set; } public MetadataSource Source { get; set; } diff --git a/ErsatzTV.Core/Metadata/LocalMetadataProvider.cs b/ErsatzTV.Core/Metadata/LocalMetadataProvider.cs index 968efe26b..0ab740781 100644 --- a/ErsatzTV.Core/Metadata/LocalMetadataProvider.cs +++ b/ErsatzTV.Core/Metadata/LocalMetadataProvider.cs @@ -97,7 +97,22 @@ namespace ErsatzTV.Core.Metadata private async Task ApplyMetadataUpdate(Movie movie, MovieMetadata metadata) { - movie.MovieMetadata = new List { metadata }; + movie.MovieMetadata.HeadOrNone().Match( + existing => + { + existing.Outline = metadata.Outline; + existing.Plot = metadata.Plot; + existing.Tagline = metadata.Tagline; + existing.Title = metadata.Title; + existing.DateAdded = metadata.DateAdded; + existing.DateUpdated = metadata.DateUpdated; + existing.MetadataKind = metadata.MetadataKind; + existing.OriginalTitle = metadata.OriginalTitle; + existing.ReleaseDate = metadata.ReleaseDate; + existing.SortTitle = metadata.SortTitle; + }, + () => movie.MovieMetadata = new List { metadata }); + await _mediaItemRepository.Update(movie); } @@ -230,7 +245,7 @@ namespace ErsatzTV.Core.Metadata ReleaseDate = nfo.Premiered, Plot = nfo.Plot, Outline = nfo.Outline, - Tagline = nfo.Tagline, + Tagline = nfo.Tagline }, None); } diff --git a/ErsatzTV.Infrastructure/Data/Configurations/MediaItem/ShowConfiguration.cs b/ErsatzTV.Infrastructure/Data/Configurations/MediaItem/ShowConfiguration.cs index f07b36098..52195bf23 100644 --- a/ErsatzTV.Infrastructure/Data/Configurations/MediaItem/ShowConfiguration.cs +++ b/ErsatzTV.Infrastructure/Data/Configurations/MediaItem/ShowConfiguration.cs @@ -14,7 +14,7 @@ namespace ErsatzTV.Infrastructure.Data.Configurations .WithOne(s => s.Show) .HasForeignKey(s => s.ShowId) .OnDelete(DeleteBehavior.Cascade); - + builder.HasMany(s => s.ShowMetadata) .WithOne(s => s.Show) .HasForeignKey(s => s.ShowId) diff --git a/ErsatzTV.Infrastructure/Data/Configurations/PlayoutProgramScheduleAnchorConfiguration.cs b/ErsatzTV.Infrastructure/Data/Configurations/PlayoutProgramScheduleAnchorConfiguration.cs index 87a35ecb2..113969e47 100644 --- a/ErsatzTV.Infrastructure/Data/Configurations/PlayoutProgramScheduleAnchorConfiguration.cs +++ b/ErsatzTV.Infrastructure/Data/Configurations/PlayoutProgramScheduleAnchorConfiguration.cs @@ -12,7 +12,7 @@ namespace ErsatzTV.Infrastructure.Data.Configurations builder.OwnsOne(a => a.EnumeratorState) .WithOwner(); - + // TODO: fix this foreign key builder.HasOne(i => i.Collection) .WithMany() diff --git a/ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs b/ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs index fecaccf9c..aa02c327c 100644 --- a/ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs +++ b/ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.Data; -using System.Linq; using System.Threading.Tasks; using Dapper; using ErsatzTV.Core; @@ -15,8 +14,8 @@ namespace ErsatzTV.Infrastructure.Data.Repositories { public class MovieRepository : IMovieRepository { - private readonly TvContext _dbContext; private readonly IDbConnection _dbConnection; + private readonly TvContext _dbContext; public MovieRepository(TvContext dbContext, IDbConnection dbConnection) { @@ -67,10 +66,13 @@ namespace ErsatzTV.Infrastructure.Data.Repositories _dbConnection.QuerySingleAsync(@"SELECT COUNT(DISTINCT MovieId) FROM NewMovieMetadata"); public Task> GetPagedMovies(int pageNumber, int pageSize) => - _dbContext.MovieMetadata.FromSqlRaw(@"SELECT * FROM NewMovieMetadata WHERE Id IN + _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) + LIMIT {0} OFFSET {1}", + pageSize, + (pageNumber - 1) * pageSize) .ToListAsync(); private async Task> AddMovie(int libraryPathId, string path) diff --git a/ErsatzTV.Infrastructure/Migrations/20210226025109_TelevisionMediaItems.cs b/ErsatzTV.Infrastructure/Migrations/20210226025109_TelevisionMediaItems.cs index ccb1b0069..9baa5fe44 100644 --- a/ErsatzTV.Infrastructure/Migrations/20210226025109_TelevisionMediaItems.cs +++ b/ErsatzTV.Infrastructure/Migrations/20210226025109_TelevisionMediaItems.cs @@ -143,71 +143,80 @@ namespace ErsatzTV.Infrastructure.Migrations "IX_Season_ShowId", "Season", "ShowId"); - + // create show media items - migrationBuilder.Sql(@"INSERT INTO MediaItem (TelevisionShowId, LibraryPathId) + migrationBuilder.Sql( + @"INSERT INTO MediaItem (TelevisionShowId, LibraryPathId) SELECT distinct ts.Id, mi.LibraryPathId FROM TelevisionShow ts INNER JOIN TelevisionSeason tsn ON tsn.TelevisionShowId = ts.Id INNER JOIN TelevisionEpisode te ON te.SeasonId = tsn.Id INNER JOIN MediaItem mi on mi.Id = te.Id"); - + // create shows migrationBuilder.Sql(@"INSERT INTO Show (Id) SELECT Id FROM MediaItem WHERE TelevisionShowId > 0"); - + // create season media items - migrationBuilder.Sql(@"INSERT INTO MediaItem (TelevisionSeasonId, LibraryPathId) + migrationBuilder.Sql( + @"INSERT INTO MediaItem (TelevisionSeasonId, LibraryPathId) SELECT distinct tsn.Id, mi.LibraryPathId FROM TelevisionSeason tsn INNER JOIN TelevisionEpisode te ON te.SeasonId = tsn.Id INNER JOIN MediaItem mi on mi.Id = te.Id"); - + // create seasons - migrationBuilder.Sql(@"INSERT INTO Season (Id, ShowId) + migrationBuilder.Sql( + @"INSERT INTO Season (Id, ShowId) SELECT mi.Id, mi2.Id FROM MediaItem mi INNER JOIN TelevisionSeason tsn ON tsn.Id = mi.TelevisionSeasonId - INNER JOIN MediaItem mi2 ON mi2.TelevisionShowId = tsn.TelevisionShowId AND mi.LibraryPathId = mi2.LibraryPathId"); - + INNER JOIN MediaItem mi2 ON mi2.TelevisionShowId = tsn.TelevisionShowId AND mi.LibraryPathId = mi2.LibraryPathId"); + // mark episode media items - migrationBuilder.Sql(@"UPDATE MediaItem SET TelevisionEpisodeId = Id + migrationBuilder.Sql( + @"UPDATE MediaItem SET TelevisionEpisodeId = Id WHERE Id IN (SELECT Id FROM TelevisionEpisode)"); - + // create episodes - migrationBuilder.Sql(@"INSERT INTO Episode (Id, SeasonId) + migrationBuilder.Sql( + @"INSERT INTO Episode (Id, SeasonId) SELECT mi.Id, mi2.Id FROM MediaItem mi INNER JOIN TelevisionEpisode te on mi.Id = te.Id INNER JOIN MediaItem mi2 ON mi2.TelevisionSeasonId = te.SeasonId AND mi.LibraryPathId = mi2.LibraryPathId"); - + // collections migrationBuilder.Sql(@"INSERT INTO Collection (Name) SELECT Name FROM MediaCollection"); - + // collection movies - migrationBuilder.Sql(@"INSERT INTO CollectionItem (CollectionId, MediaItemId) + migrationBuilder.Sql( + @"INSERT INTO CollectionItem (CollectionId, MediaItemId) SELECT c.Id, smcm.MoviesId FROM Collection c INNER JOIN MediaCollection mc on mc.Name = c.Name INNER JOIN SimpleMediaCollectionMovie smcm ON smcm.SimpleMediaCollectionsId = mc.Id"); - + // collection shows - migrationBuilder.Sql(@"INSERT INTO CollectionItem (CollectionId, MediaItemId) + migrationBuilder.Sql( + @"INSERT INTO CollectionItem (CollectionId, MediaItemId) SELECT c.Id, mi.Id FROM Collection c INNER JOIN MediaCollection mc on mc.Name = c.Name INNER JOIN SimpleMediaCollectionShow smcs ON smcs.SimpleMediaCollectionsId = mc.Id INNER JOIN MediaItem mi ON mi.TelevisionShowId = smcs.TelevisionShowsId"); - + // collection seasons - migrationBuilder.Sql(@"INSERT INTO CollectionItem (CollectionId, MediaItemId) + migrationBuilder.Sql( + @"INSERT INTO CollectionItem (CollectionId, MediaItemId) SELECT c.Id, mi.Id FROM Collection c INNER JOIN MediaCollection mc on mc.Name = c.Name INNER JOIN SimpleMediaCollectionSeason smcs ON smcs.SimpleMediaCollectionsId = mc.Id INNER JOIN MediaItem mi ON mi.TelevisionSeasonId = smcs.TelevisionSeasonsId"); - + // collection episodes - migrationBuilder.Sql(@"INSERT INTO CollectionItem (CollectionId, MediaItemId) + migrationBuilder.Sql( + @"INSERT INTO CollectionItem (CollectionId, MediaItemId) SELECT c.Id, mi.Id FROM Collection c INNER JOIN MediaCollection mc on mc.Name = c.Name diff --git a/ErsatzTV.Infrastructure/Migrations/20210226114450_Add_VersionsAndMetadata.cs b/ErsatzTV.Infrastructure/Migrations/20210226114450_Add_VersionsAndMetadata.cs index c31897710..35e060a32 100644 --- a/ErsatzTV.Infrastructure/Migrations/20210226114450_Add_VersionsAndMetadata.cs +++ b/ErsatzTV.Infrastructure/Migrations/20210226114450_Add_VersionsAndMetadata.cs @@ -8,216 +8,216 @@ namespace ErsatzTV.Infrastructure.Migrations protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.AddColumn( - name: "SeasonNumber", - table: "Season", - type: "INTEGER", + "SeasonNumber", + "Season", + "INTEGER", nullable: false, defaultValue: 0); migrationBuilder.AddColumn( - name: "EpisodeNumber", - table: "Episode", - type: "INTEGER", + "EpisodeNumber", + "Episode", + "INTEGER", nullable: false, defaultValue: 0); migrationBuilder.CreateTable( - name: "EpisodeMetadata", - columns: table => new + "EpisodeMetadata", + table => new { - Id = table.Column(type: "INTEGER", nullable: false) + Id = table.Column("INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), - Outline = table.Column(type: "TEXT", nullable: true), - Plot = table.Column(type: "TEXT", nullable: true), - Tagline = table.Column(type: "TEXT", nullable: true), - EpisodeId = table.Column(type: "INTEGER", nullable: false), - MetadataKind = table.Column(type: "INTEGER", nullable: false), - Title = table.Column(type: "TEXT", nullable: true), - OriginalTitle = table.Column(type: "TEXT", nullable: true), - SortTitle = table.Column(type: "TEXT", nullable: true), - ReleaseDate = table.Column(type: "TEXT", nullable: true), - DateAdded = table.Column(type: "TEXT", nullable: false), - DateUpdated = table.Column(type: "TEXT", nullable: false) + Outline = table.Column("TEXT", nullable: true), + Plot = table.Column("TEXT", nullable: true), + Tagline = table.Column("TEXT", nullable: true), + EpisodeId = table.Column("INTEGER", nullable: false), + MetadataKind = table.Column("INTEGER", nullable: false), + Title = table.Column("TEXT", nullable: true), + OriginalTitle = table.Column("TEXT", nullable: true), + SortTitle = table.Column("TEXT", nullable: true), + ReleaseDate = table.Column("TEXT", nullable: true), + DateAdded = table.Column("TEXT", nullable: false), + DateUpdated = table.Column("TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_EpisodeMetadata", x => x.Id); table.ForeignKey( - name: "FK_EpisodeMetadata_Episode_EpisodeId", - column: x => x.EpisodeId, - principalTable: "Episode", - principalColumn: "Id", + "FK_EpisodeMetadata_Episode_EpisodeId", + x => x.EpisodeId, + "Episode", + "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "MediaVersion", - columns: table => new + "MediaVersion", + table => new { - Id = table.Column(type: "INTEGER", nullable: false) + Id = table.Column("INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), - Name = table.Column(type: "TEXT", nullable: true), - Duration = table.Column(type: "TEXT", nullable: false), - SampleAspectRatio = table.Column(type: "TEXT", nullable: true), - DisplayAspectRatio = table.Column(type: "TEXT", nullable: true), - VideoCodec = table.Column(type: "TEXT", nullable: true), - AudioCodec = table.Column(type: "TEXT", nullable: true), - IsInterlaced = table.Column(type: "INTEGER", nullable: false), - Width = table.Column(type: "INTEGER", nullable: false), - Height = table.Column(type: "INTEGER", nullable: false), - EpisodeId = table.Column(type: "INTEGER", nullable: true), - MovieId = table.Column(type: "INTEGER", nullable: true) + Name = table.Column("TEXT", nullable: true), + Duration = table.Column("TEXT", nullable: false), + SampleAspectRatio = table.Column("TEXT", nullable: true), + DisplayAspectRatio = table.Column("TEXT", nullable: true), + VideoCodec = table.Column("TEXT", nullable: true), + AudioCodec = table.Column("TEXT", nullable: true), + IsInterlaced = table.Column("INTEGER", nullable: false), + Width = table.Column("INTEGER", nullable: false), + Height = table.Column("INTEGER", nullable: false), + EpisodeId = table.Column("INTEGER", nullable: true), + MovieId = table.Column("INTEGER", nullable: true) }, constraints: table => { table.PrimaryKey("PK_MediaVersion", x => x.Id); table.ForeignKey( - name: "FK_MediaVersion_Episode_EpisodeId", - column: x => x.EpisodeId, - principalTable: "Episode", - principalColumn: "Id", + "FK_MediaVersion_Episode_EpisodeId", + x => x.EpisodeId, + "Episode", + "Id", onDelete: ReferentialAction.Cascade); table.ForeignKey( - name: "FK_MediaVersion_Movie_MovieId", - column: x => x.MovieId, - principalTable: "Movie", - principalColumn: "Id", + "FK_MediaVersion_Movie_MovieId", + x => x.MovieId, + "Movie", + "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "NewMovieMetadata", - columns: table => new + "NewMovieMetadata", + table => new { - Id = table.Column(type: "INTEGER", nullable: false) + Id = table.Column("INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), - Outline = table.Column(type: "TEXT", nullable: true), - Plot = table.Column(type: "TEXT", nullable: true), - Tagline = table.Column(type: "TEXT", nullable: true), - MovieId = table.Column(type: "INTEGER", nullable: false), - MetadataKind = table.Column(type: "INTEGER", nullable: false), - Title = table.Column(type: "TEXT", nullable: true), - OriginalTitle = table.Column(type: "TEXT", nullable: true), - SortTitle = table.Column(type: "TEXT", nullable: true), - ReleaseDate = table.Column(type: "TEXT", nullable: true), - DateAdded = table.Column(type: "TEXT", nullable: false), - DateUpdated = table.Column(type: "TEXT", nullable: false) + Outline = table.Column("TEXT", nullable: true), + Plot = table.Column("TEXT", nullable: true), + Tagline = table.Column("TEXT", nullable: true), + MovieId = table.Column("INTEGER", nullable: false), + MetadataKind = table.Column("INTEGER", nullable: false), + Title = table.Column("TEXT", nullable: true), + OriginalTitle = table.Column("TEXT", nullable: true), + SortTitle = table.Column("TEXT", nullable: true), + ReleaseDate = table.Column("TEXT", nullable: true), + DateAdded = table.Column("TEXT", nullable: false), + DateUpdated = table.Column("TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_NewMovieMetadata", x => x.Id); table.ForeignKey( - name: "FK_NewMovieMetadata_Movie_MovieId", - column: x => x.MovieId, - principalTable: "Movie", - principalColumn: "Id", + "FK_NewMovieMetadata_Movie_MovieId", + x => x.MovieId, + "Movie", + "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "ShowMetadata", - columns: table => new + "ShowMetadata", + table => new { - Id = table.Column(type: "INTEGER", nullable: false) + Id = table.Column("INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), - Outline = table.Column(type: "TEXT", nullable: true), - Plot = table.Column(type: "TEXT", nullable: true), - Tagline = table.Column(type: "TEXT", nullable: true), - ShowId = table.Column(type: "INTEGER", nullable: false), - MetadataKind = table.Column(type: "INTEGER", nullable: false), - Title = table.Column(type: "TEXT", nullable: true), - OriginalTitle = table.Column(type: "TEXT", nullable: true), - SortTitle = table.Column(type: "TEXT", nullable: true), - ReleaseDate = table.Column(type: "TEXT", nullable: true), - DateAdded = table.Column(type: "TEXT", nullable: false), - DateUpdated = table.Column(type: "TEXT", nullable: false) + Outline = table.Column("TEXT", nullable: true), + Plot = table.Column("TEXT", nullable: true), + Tagline = table.Column("TEXT", nullable: true), + ShowId = table.Column("INTEGER", nullable: false), + MetadataKind = table.Column("INTEGER", nullable: false), + Title = table.Column("TEXT", nullable: true), + OriginalTitle = table.Column("TEXT", nullable: true), + SortTitle = table.Column("TEXT", nullable: true), + ReleaseDate = table.Column("TEXT", nullable: true), + DateAdded = table.Column("TEXT", nullable: false), + DateUpdated = table.Column("TEXT", nullable: false) }, constraints: table => { table.PrimaryKey("PK_ShowMetadata", x => x.Id); table.ForeignKey( - name: "FK_ShowMetadata_Show_ShowId", - column: x => x.ShowId, - principalTable: "Show", - principalColumn: "Id", + "FK_ShowMetadata_Show_ShowId", + x => x.ShowId, + "Show", + "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateTable( - name: "MediaFile", - columns: table => new + "MediaFile", + table => new { - Id = table.Column(type: "INTEGER", nullable: false) + Id = table.Column("INTEGER", nullable: false) .Annotation("Sqlite:Autoincrement", true), - Path = table.Column(type: "TEXT", nullable: true), - MediaVersionId = table.Column(type: "INTEGER", nullable: false) + Path = table.Column("TEXT", nullable: true), + MediaVersionId = table.Column("INTEGER", nullable: false) }, constraints: table => { table.PrimaryKey("PK_MediaFile", x => x.Id); table.ForeignKey( - name: "FK_MediaFile_MediaVersion_MediaVersionId", - column: x => x.MediaVersionId, - principalTable: "MediaVersion", - principalColumn: "Id", + "FK_MediaFile_MediaVersion_MediaVersionId", + x => x.MediaVersionId, + "MediaVersion", + "Id", onDelete: ReferentialAction.Cascade); }); migrationBuilder.CreateIndex( - name: "IX_EpisodeMetadata_EpisodeId", - table: "EpisodeMetadata", - column: "EpisodeId"); + "IX_EpisodeMetadata_EpisodeId", + "EpisodeMetadata", + "EpisodeId"); migrationBuilder.CreateIndex( - name: "IX_MediaFile_MediaVersionId", - table: "MediaFile", - column: "MediaVersionId"); + "IX_MediaFile_MediaVersionId", + "MediaFile", + "MediaVersionId"); migrationBuilder.CreateIndex( - name: "IX_MediaVersion_EpisodeId", - table: "MediaVersion", - column: "EpisodeId"); + "IX_MediaVersion_EpisodeId", + "MediaVersion", + "EpisodeId"); migrationBuilder.CreateIndex( - name: "IX_MediaVersion_MovieId", - table: "MediaVersion", - column: "MovieId"); + "IX_MediaVersion_MovieId", + "MediaVersion", + "MovieId"); migrationBuilder.CreateIndex( - name: "IX_NewMovieMetadata_MovieId", - table: "NewMovieMetadata", - column: "MovieId"); + "IX_NewMovieMetadata_MovieId", + "NewMovieMetadata", + "MovieId"); migrationBuilder.CreateIndex( - name: "IX_ShowMetadata_ShowId", - table: "ShowMetadata", - column: "ShowId"); + "IX_ShowMetadata_ShowId", + "ShowMetadata", + "ShowId"); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( - name: "EpisodeMetadata"); + "EpisodeMetadata"); migrationBuilder.DropTable( - name: "MediaFile"); + "MediaFile"); migrationBuilder.DropTable( - name: "NewMovieMetadata"); + "NewMovieMetadata"); migrationBuilder.DropTable( - name: "ShowMetadata"); + "ShowMetadata"); migrationBuilder.DropTable( - name: "MediaVersion"); + "MediaVersion"); migrationBuilder.DropColumn( - name: "SeasonNumber", - table: "Season"); + "SeasonNumber", + "Season"); migrationBuilder.DropColumn( - name: "EpisodeNumber", - table: "Episode"); + "EpisodeNumber", + "Episode"); } } } diff --git a/ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.cs b/ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.cs index d89c9789a..be6eda800 100644 --- a/ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.cs +++ b/ErsatzTV.Infrastructure/Migrations/20210226132335_Update_MovieMetadata.cs @@ -8,7 +8,7 @@ namespace ErsatzTV.Infrastructure.Migrations protected override void Up(MigrationBuilder migrationBuilder) { var now = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss.FFFFFFF"); - + migrationBuilder.Sql( @$"INSERT INTO NewMovieMetadata (Outline, Plot, Tagline, MovieId, MetadataKind, Title, OriginalTitle, SortTitle, ReleaseDate, DateAdded, DateUpdated) SELECT mm.Outline, mm.Plot, mm.Tagline, m.Id, mm.Source, mm.Title, null, mm.SortTitle, mm.Premiered, '{now}', mm.LastWriteTime diff --git a/ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs b/ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs index 5c363281f..0e02a8c95 100644 --- a/ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs +++ b/ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs @@ -1,14 +1,14 @@ // + using System; using ErsatzTV.Infrastructure.Data; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace ErsatzTV.Infrastructure.Migrations { [DbContext(typeof(TvContext))] - partial class TvContextModelSnapshot : ModelSnapshot + internal class TvContextModelSnapshot : ModelSnapshot { protected override void BuildModel(ModelBuilder modelBuilder) { @@ -16,7 +16,9 @@ namespace ErsatzTV.Infrastructure.Migrations modelBuilder .HasAnnotation("ProductVersion", "5.0.3"); - modelBuilder.Entity("ErsatzTV.Core.Domain.Channel", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Channel", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -50,7 +52,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("Channel"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Collection", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Collection", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -64,7 +68,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("Collection"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.CollectionItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.CollectionItem", + b => { b.Property("CollectionId") .HasColumnType("INTEGER"); @@ -79,7 +85,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("CollectionItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ConfigElement", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ConfigElement", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -99,7 +107,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("ConfigElement"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.EpisodeMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.EpisodeMetadata", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -145,7 +155,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("EpisodeMetadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.FFmpegProfile", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.FFmpegProfile", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -209,7 +221,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("FFmpegProfile"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Library", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Library", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -234,7 +248,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("Library"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LibraryPath", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LibraryPath", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -253,7 +269,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("LibraryPath"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaCollection", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaCollection", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -270,7 +288,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("MediaCollection"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaFile", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaFile", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -289,7 +309,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("MediaFile"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaItem", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -326,7 +348,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("MediaItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaSource", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -337,7 +361,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("MediaSource"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaVersion", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaVersion", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -385,7 +411,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("MediaVersion"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.NewMovieMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.NewMovieMetadata", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -431,7 +459,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("NewMovieMetadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Playout", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Playout", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -455,7 +485,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("Playout"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlayoutItem", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -482,7 +514,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("PlayoutItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -519,7 +553,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("PlayoutProgramScheduleAnchor"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexConnection", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexConnection", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -541,7 +577,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("PlexConnection"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaItemPart", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexMediaItemPart", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -567,7 +605,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("PlexMediaItemPart"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramSchedule", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramSchedule", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -587,7 +627,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("ProgramSchedule"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItem", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -637,7 +679,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("ProgramScheduleItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Resolution", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Resolution", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -657,7 +701,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("Resolution"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ShowMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ShowMetadata", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -703,7 +749,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("ShowMetadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionEpisodeMetadata", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -744,7 +792,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("TelevisionEpisodeMetadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionSeason", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionSeason", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -772,7 +822,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("TelevisionSeason"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShow", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionShow", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -789,7 +841,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("TelevisionShow"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShowMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionShowMetadata", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -824,7 +878,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("TelevisionShowMetadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShowSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionShowSource", + b => { b.Property("Id") .ValueGeneratedOnAdd() @@ -846,7 +902,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.HasDiscriminator("Discriminator").HasValue("TelevisionShowSource"); }); - modelBuilder.Entity("MovieSimpleMediaCollection", b => + modelBuilder.Entity( + "MovieSimpleMediaCollection", + b => { b.Property("MoviesId") .HasColumnType("INTEGER"); @@ -861,7 +919,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("SimpleMediaCollectionMovie"); }); - modelBuilder.Entity("SimpleMediaCollectionTelevisionEpisodeMediaItem", b => + modelBuilder.Entity( + "SimpleMediaCollectionTelevisionEpisodeMediaItem", + b => { b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); @@ -876,7 +936,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("SimpleMediaCollectionEpisode"); }); - modelBuilder.Entity("SimpleMediaCollectionTelevisionSeason", b => + modelBuilder.Entity( + "SimpleMediaCollectionTelevisionSeason", + b => { b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); @@ -891,7 +953,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("SimpleMediaCollectionSeason"); }); - modelBuilder.Entity("SimpleMediaCollectionTelevisionShow", b => + modelBuilder.Entity( + "SimpleMediaCollectionTelevisionShow", + b => { b.Property("SimpleMediaCollectionsId") .HasColumnType("INTEGER"); @@ -906,14 +970,18 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("SimpleMediaCollectionShow"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LocalLibrary", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LocalLibrary", + b => { b.HasBaseType("ErsatzTV.Core.Domain.Library"); b.ToTable("LocalLibrary"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexLibrary", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexLibrary", + b => { b.HasBaseType("ErsatzTV.Core.Domain.Library"); @@ -926,14 +994,18 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("PlexLibrary"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.SimpleMediaCollection", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.SimpleMediaCollection", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaCollection"); b.ToTable("SimpleMediaCollection"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Episode", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Episode", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); @@ -948,14 +1020,18 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("Episode"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Movie", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Movie", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); b.ToTable("Movie"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Season", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); @@ -970,14 +1046,18 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("Season"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Show", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Show", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); b.ToTable("Show"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaItem"); @@ -989,14 +1069,18 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("TelevisionEpisode"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LocalMediaSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LocalMediaSource", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaSource"); b.ToTable("LocalMediaSource"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexMediaSource", + b => { b.HasBaseType("ErsatzTV.Core.Domain.MediaSource"); @@ -1012,7 +1096,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("PlexMediaSource"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemDuration", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemDuration", + b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); @@ -1025,14 +1111,18 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("ProgramScheduleDurationItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemFlood", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemFlood", + b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.ToTable("ProgramScheduleFloodItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", + b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); @@ -1042,14 +1132,18 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("ProgramScheduleMultipleItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemOne", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemOne", + b => { b.HasBaseType("ErsatzTV.Core.Domain.ProgramScheduleItem"); b.ToTable("ProgramScheduleOneItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LocalTelevisionShowSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LocalTelevisionShowSource", + b => { b.HasBaseType("ErsatzTV.Core.Domain.TelevisionShowSource"); @@ -1064,7 +1158,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.HasDiscriminator().HasValue("LocalTelevisionShowSource"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMovie", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexMovie", + b => { b.HasBaseType("ErsatzTV.Core.Domain.Movie"); @@ -1079,7 +1175,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.ToTable("PlexMovie"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Channel", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Channel", + b => { b.HasOne("ErsatzTV.Core.Domain.FFmpegProfile", "FFmpegProfile") .WithMany() @@ -1090,7 +1188,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("FFmpegProfile"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.CollectionItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.CollectionItem", + b => { b.HasOne("ErsatzTV.Core.Domain.Collection", "Collection") .WithMany("CollectionItems") @@ -1109,7 +1209,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("MediaItem"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.EpisodeMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.EpisodeMetadata", + b => { b.HasOne("ErsatzTV.Core.Domain.Episode", "Episode") .WithMany("EpisodeMetadata") @@ -1120,7 +1222,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Episode"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.FFmpegProfile", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.FFmpegProfile", + b => { b.HasOne("ErsatzTV.Core.Domain.Resolution", "Resolution") .WithMany() @@ -1131,7 +1235,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Resolution"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Library", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Library", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaSource", "MediaSource") .WithMany("Libraries") @@ -1142,7 +1248,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("MediaSource"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LibraryPath", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LibraryPath", + b => { b.HasOne("ErsatzTV.Core.Domain.Library", "Library") .WithMany("Paths") @@ -1153,7 +1261,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Library"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaFile", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaFile", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaVersion", "MediaVersion") .WithMany("MediaFiles") @@ -1164,7 +1274,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("MediaVersion"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaItem", + b => { b.HasOne("ErsatzTV.Core.Domain.LibraryPath", "LibraryPath") .WithMany("MediaItems") @@ -1172,7 +1284,10 @@ namespace ErsatzTV.Infrastructure.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsOne("ErsatzTV.Core.Domain.MediaItemStatistics", "Statistics", b1 => + b.OwnsOne( + "ErsatzTV.Core.Domain.MediaItemStatistics", + "Statistics", + b1 => { b1.Property("MediaItemId") .HasColumnType("INTEGER"); @@ -1217,7 +1332,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Statistics"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaVersion", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.MediaVersion", + b => { b.HasOne("ErsatzTV.Core.Domain.Episode", null) .WithMany("MediaVersions") @@ -1230,7 +1347,9 @@ namespace ErsatzTV.Infrastructure.Migrations .OnDelete(DeleteBehavior.Cascade); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.NewMovieMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.NewMovieMetadata", + b => { b.HasOne("ErsatzTV.Core.Domain.Movie", "Movie") .WithMany("MovieMetadata") @@ -1241,7 +1360,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Movie"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Playout", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Playout", + b => { b.HasOne("ErsatzTV.Core.Domain.Channel", "Channel") .WithMany("Playouts") @@ -1255,7 +1376,10 @@ namespace ErsatzTV.Infrastructure.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsOne("ErsatzTV.Core.Domain.PlayoutAnchor", "Anchor", b1 => + b.OwnsOne( + "ErsatzTV.Core.Domain.PlayoutAnchor", + "Anchor", + b1 => { b1.Property("PlayoutId") .HasColumnType("INTEGER"); @@ -1291,7 +1415,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("ProgramSchedule"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlayoutItem", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem") .WithMany() @@ -1310,7 +1436,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Playout"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem") .WithMany() @@ -1332,7 +1460,10 @@ namespace ErsatzTV.Infrastructure.Migrations .OnDelete(DeleteBehavior.Cascade) .IsRequired(); - b.OwnsOne("ErsatzTV.Core.Domain.MediaCollectionEnumeratorState", "EnumeratorState", b1 => + b.OwnsOne( + "ErsatzTV.Core.Domain.MediaCollectionEnumeratorState", + "EnumeratorState", + b1 => { b1.Property("PlayoutProgramScheduleAnchorId") .HasColumnType("INTEGER"); @@ -1362,7 +1493,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("ProgramSchedule"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexConnection", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexConnection", + b => { b.HasOne("ErsatzTV.Core.Domain.PlexMediaSource", "PlexMediaSource") .WithMany("Connections") @@ -1373,7 +1506,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("PlexMediaSource"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItem", + b => { b.HasOne("ErsatzTV.Core.Domain.Collection", "Collection") .WithMany() @@ -1414,7 +1549,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("TelevisionShow"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ShowMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ShowMetadata", + b => { b.HasOne("ErsatzTV.Core.Domain.Show", "Show") .WithMany("ShowMetadata") @@ -1425,7 +1562,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Show"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionEpisodeMetadata", + b => { b.HasOne("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", "TelevisionEpisode") .WithOne("Metadata") @@ -1436,7 +1575,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("TelevisionEpisode"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionSeason", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionSeason", + b => { b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", "TelevisionShow") .WithMany("Seasons") @@ -1447,7 +1588,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("TelevisionShow"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShowMetadata", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionShowMetadata", + b => { b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", "TelevisionShow") .WithOne("Metadata") @@ -1458,7 +1601,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("TelevisionShow"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShowSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionShowSource", + b => { b.HasOne("ErsatzTV.Core.Domain.TelevisionShow", "TelevisionShow") .WithMany("Sources") @@ -1469,7 +1614,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("TelevisionShow"); }); - modelBuilder.Entity("MovieSimpleMediaCollection", b => + modelBuilder.Entity( + "MovieSimpleMediaCollection", + b => { b.HasOne("ErsatzTV.Core.Domain.Movie", null) .WithMany() @@ -1484,7 +1631,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("SimpleMediaCollectionTelevisionEpisodeMediaItem", b => + modelBuilder.Entity( + "SimpleMediaCollectionTelevisionEpisodeMediaItem", + b => { b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null) .WithMany() @@ -1499,7 +1648,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("SimpleMediaCollectionTelevisionSeason", b => + modelBuilder.Entity( + "SimpleMediaCollectionTelevisionSeason", + b => { b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null) .WithMany() @@ -1514,7 +1665,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("SimpleMediaCollectionTelevisionShow", b => + modelBuilder.Entity( + "SimpleMediaCollectionTelevisionShow", + b => { b.HasOne("ErsatzTV.Core.Domain.SimpleMediaCollection", null) .WithMany() @@ -1529,7 +1682,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LocalLibrary", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LocalLibrary", + b => { b.HasOne("ErsatzTV.Core.Domain.Library", null) .WithOne() @@ -1538,7 +1693,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexLibrary", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexLibrary", + b => { b.HasOne("ErsatzTV.Core.Domain.Library", null) .WithOne() @@ -1547,7 +1704,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.SimpleMediaCollection", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.SimpleMediaCollection", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaCollection", null) .WithOne() @@ -1556,7 +1715,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Episode", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Episode", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() @@ -1573,7 +1734,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Season"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Movie", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Movie", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() @@ -1582,7 +1745,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Season", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() @@ -1599,7 +1764,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Show"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Show", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Show", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() @@ -1608,7 +1775,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaItem", null) .WithOne() @@ -1625,7 +1794,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Season"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LocalMediaSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LocalMediaSource", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaSource", null) .WithOne() @@ -1634,7 +1805,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexMediaSource", + b => { b.HasOne("ErsatzTV.Core.Domain.MediaSource", null) .WithOne() @@ -1643,7 +1816,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemDuration", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemDuration", + b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() @@ -1652,7 +1827,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemFlood", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemFlood", + b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() @@ -1661,7 +1838,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemMultiple", + b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() @@ -1670,7 +1849,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramScheduleItemOne", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.ProgramScheduleItemOne", + b => { b.HasOne("ErsatzTV.Core.Domain.ProgramScheduleItem", null) .WithOne() @@ -1679,7 +1860,9 @@ namespace ErsatzTV.Infrastructure.Migrations .IsRequired(); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.LocalTelevisionShowSource", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.LocalTelevisionShowSource", + b => { b.HasOne("ErsatzTV.Core.Domain.LocalMediaSource", "MediaSource") .WithMany() @@ -1690,7 +1873,9 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("MediaSource"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMovie", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.PlexMovie", + b => { b.HasOne("ErsatzTV.Core.Domain.Movie", null) .WithOne() @@ -1705,61 +1890,43 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Part"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Channel", b => - { - b.Navigation("Playouts"); - }); + 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.Collection", b => { b.Navigation("CollectionItems"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Library", b => - { - b.Navigation("Paths"); - }); + 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.LibraryPath", b => { b.Navigation("MediaItems"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaItem", b => - { - b.Navigation("CollectionItems"); - }); + 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.MediaSource", b => { b.Navigation("Libraries"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.MediaVersion", b => - { - b.Navigation("MediaFiles"); - }); + modelBuilder.Entity("ErsatzTV.Core.Domain.MediaVersion", b => { b.Navigation("MediaFiles"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Playout", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Playout", + b => { b.Navigation("Items"); b.Navigation("ProgramScheduleAnchors"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.ProgramSchedule", b => + 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.TelevisionSeason", b => { b.Navigation("Episodes"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionShow", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.TelevisionShow", + b => { b.Navigation("Metadata"); @@ -1768,41 +1935,38 @@ namespace ErsatzTV.Infrastructure.Migrations b.Navigation("Sources"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Episode", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Episode", + b => { b.Navigation("EpisodeMetadata"); b.Navigation("MediaVersions"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Movie", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Movie", + b => { b.Navigation("MediaVersions"); b.Navigation("MovieMetadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b => - { - b.Navigation("Episodes"); - }); + modelBuilder.Entity("ErsatzTV.Core.Domain.Season", b => { b.Navigation("Episodes"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.Show", b => + modelBuilder.Entity( + "ErsatzTV.Core.Domain.Show", + b => { b.Navigation("Seasons"); b.Navigation("ShowMetadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", b => - { - b.Navigation("Metadata"); - }); + modelBuilder.Entity("ErsatzTV.Core.Domain.TelevisionEpisodeMediaItem", b => { b.Navigation("Metadata"); }); - modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => - { - b.Navigation("Connections"); - }); + modelBuilder.Entity("ErsatzTV.Core.Domain.PlexMediaSource", b => { b.Navigation("Connections"); }); #pragma warning restore 612, 618 } }