Browse Source

clean up movie metadata table

pull/31/head
Jason Dove 6 years ago
parent
commit
2411c2edd3
  1. 4
      ErsatzTV.Core/Domain/PlayoutProgramScheduleAnchor.cs
  2. 6
      ErsatzTV.Core/Scheduling/PlayoutBuilder.cs
  3. 4
      ErsatzTV.Infrastructure/Data/Configurations/Metadata/MovieMetadataConfiguration.cs
  4. 3
      ErsatzTV.Infrastructure/Data/Configurations/PlayoutProgramScheduleAnchorConfiguration.cs
  5. 6
      ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs
  6. 1361
      ErsatzTV.Infrastructure/Migrations/20210226201105_CleanUp_MovieMetadata.Designer.cs
  7. 117
      ErsatzTV.Infrastructure/Migrations/20210226201105_CleanUp_MovieMetadata.cs
  8. 20
      ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs

4
ErsatzTV.Core/Domain/PlayoutProgramScheduleAnchor.cs

@ -8,9 +8,7 @@ @@ -8,9 +8,7 @@
public int ProgramScheduleId { get; set; }
public ProgramSchedule ProgramSchedule { get; set; }
public ProgramScheduleItemCollectionType CollectionType { get; set; }
// TODO: rename this
public int? NewCollectionId { get; set; }
public int? CollectionId { get; set; }
public Collection Collection { get; set; }
public int? MediaItemId { get; set; }
public MediaItem MediaItem { get; set; }

6
ErsatzTV.Core/Scheduling/PlayoutBuilder.cs

@ -326,7 +326,7 @@ namespace ErsatzTV.Core.Scheduling @@ -326,7 +326,7 @@ namespace ErsatzTV.Core.Scheduling
Option<PlayoutProgramScheduleAnchor> maybeExisting = playout.ProgramScheduleAnchors
.FirstOrDefault(
a => a.CollectionType == collectionKey.CollectionType
&& a.NewCollectionId == collectionKey.CollectionId
&& a.CollectionId == collectionKey.CollectionId
&& a.MediaItemId == collectionKey.MediaItemId);
var maybeEnumeratorState = collectionEnumerators.GroupBy(e => e.Key, e => e.Value.State)
@ -345,7 +345,7 @@ namespace ErsatzTV.Core.Scheduling @@ -345,7 +345,7 @@ namespace ErsatzTV.Core.Scheduling
ProgramSchedule = playout.ProgramSchedule,
ProgramScheduleId = playout.ProgramScheduleId,
CollectionType = collectionKey.CollectionType,
NewCollectionId = collectionKey.CollectionId,
CollectionId = collectionKey.CollectionId,
MediaItemId = collectionKey.MediaItemId,
EnumeratorState = maybeEnumeratorState[collectionKey]
});
@ -365,7 +365,7 @@ namespace ErsatzTV.Core.Scheduling @@ -365,7 +365,7 @@ namespace ErsatzTV.Core.Scheduling
.FirstOrDefault(
a => a.ProgramScheduleId == playout.ProgramScheduleId
&& a.CollectionType == collectionKey.CollectionType
&& a.NewCollectionId == collectionKey.CollectionId
&& a.CollectionId == collectionKey.CollectionId
&& a.MediaItemId == collectionKey.MediaItemId);
CollectionEnumeratorState state = maybeAnchor.Match(

4
ErsatzTV.Infrastructure/Data/Configurations/Metadata/NewMovieMetadataConfiguration.cs → ErsatzTV.Infrastructure/Data/Configurations/Metadata/MovieMetadataConfiguration.cs

@ -4,8 +4,8 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -4,8 +4,8 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders;
namespace ErsatzTV.Infrastructure.Data.Configurations
{
public class NewMovieMetadataConfiguration : IEntityTypeConfiguration<MovieMetadata>
public class MovieMetadataConfiguration : IEntityTypeConfiguration<MovieMetadata>
{
public void Configure(EntityTypeBuilder<MovieMetadata> builder) => builder.ToTable("NewMovieMetadata");
public void Configure(EntityTypeBuilder<MovieMetadata> builder) => builder.ToTable("MovieMetadata");
}
}

3
ErsatzTV.Infrastructure/Data/Configurations/PlayoutProgramScheduleAnchorConfiguration.cs

@ -13,10 +13,9 @@ namespace ErsatzTV.Infrastructure.Data.Configurations @@ -13,10 +13,9 @@ namespace ErsatzTV.Infrastructure.Data.Configurations
builder.OwnsOne(a => a.EnumeratorState)
.WithOwner();
// TODO: fix this foreign key
builder.HasOne(i => i.Collection)
.WithMany()
.HasForeignKey(i => i.NewCollectionId)
.HasForeignKey(i => i.CollectionId)
.IsRequired(false);
builder.HasOne(i => i.MediaItem)

6
ErsatzTV.Infrastructure/Data/Repositories/MovieRepository.cs

@ -63,12 +63,12 @@ namespace ErsatzTV.Infrastructure.Data.Repositories @@ -63,12 +63,12 @@ namespace ErsatzTV.Infrastructure.Data.Repositories
}
public Task<int> GetMovieCount() =>
_dbConnection.QuerySingleAsync<int>(@"SELECT COUNT(DISTINCT MovieId) FROM NewMovieMetadata");
_dbConnection.QuerySingleAsync<int>(@"SELECT COUNT(DISTINCT MovieId) FROM MovieMetadata");
public Task<List<MovieMetadata>> GetPagedMovies(int pageNumber, int pageSize) =>
_dbContext.MovieMetadata.FromSqlRaw(
@"SELECT * FROM NewMovieMetadata WHERE Id IN
(SELECT Id FROM NewMovieMetadata GROUP BY MovieId, MetadataKind HAVING MetadataKind = MAX(MetadataKind))
@"SELECT * FROM MovieMetadata WHERE Id IN
(SELECT Id FROM MovieMetadata GROUP BY MovieId, MetadataKind HAVING MetadataKind = MAX(MetadataKind))
ORDER BY SortTitle
LIMIT {0} OFFSET {1}",
pageSize,

1361
ErsatzTV.Infrastructure/Migrations/20210226201105_CleanUp_MovieMetadata.Designer.cs generated

File diff suppressed because it is too large Load Diff

117
ErsatzTV.Infrastructure/Migrations/20210226201105_CleanUp_MovieMetadata.cs

@ -0,0 +1,117 @@ @@ -0,0 +1,117 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ErsatzTV.Infrastructure.Migrations
{
public partial class CleanUp_MovieMetadata : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
"FK_NewMovieMetadata_Movie_MovieId",
"NewMovieMetadata");
migrationBuilder.DropForeignKey(
"FK_PlayoutProgramScheduleAnchor_Collection_NewCollectionId",
"PlayoutProgramScheduleAnchor");
migrationBuilder.DropPrimaryKey(
"PK_NewMovieMetadata",
"NewMovieMetadata");
migrationBuilder.RenameTable(
"NewMovieMetadata",
newName: "MovieMetadata");
migrationBuilder.RenameColumn(
"NewCollectionId",
"PlayoutProgramScheduleAnchor",
"CollectionId");
migrationBuilder.RenameIndex(
"IX_PlayoutProgramScheduleAnchor_NewCollectionId",
table: "PlayoutProgramScheduleAnchor",
newName: "IX_PlayoutProgramScheduleAnchor_CollectionId");
migrationBuilder.RenameIndex(
"IX_NewMovieMetadata_MovieId",
table: "MovieMetadata",
newName: "IX_MovieMetadata_MovieId");
migrationBuilder.AddPrimaryKey(
"PK_MovieMetadata",
"MovieMetadata",
"Id");
migrationBuilder.AddForeignKey(
"FK_MovieMetadata_Movie_MovieId",
"MovieMetadata",
"MovieId",
"Movie",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
"FK_PlayoutProgramScheduleAnchor_Collection_CollectionId",
"PlayoutProgramScheduleAnchor",
"CollectionId",
"Collection",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
"FK_MovieMetadata_Movie_MovieId",
"MovieMetadata");
migrationBuilder.DropForeignKey(
"FK_PlayoutProgramScheduleAnchor_Collection_CollectionId",
"PlayoutProgramScheduleAnchor");
migrationBuilder.DropPrimaryKey(
"PK_MovieMetadata",
"MovieMetadata");
migrationBuilder.RenameTable(
"MovieMetadata",
newName: "NewMovieMetadata");
migrationBuilder.RenameColumn(
"CollectionId",
"PlayoutProgramScheduleAnchor",
"NewCollectionId");
migrationBuilder.RenameIndex(
"IX_PlayoutProgramScheduleAnchor_CollectionId",
table: "PlayoutProgramScheduleAnchor",
newName: "IX_PlayoutProgramScheduleAnchor_NewCollectionId");
migrationBuilder.RenameIndex(
"IX_MovieMetadata_MovieId",
table: "NewMovieMetadata",
newName: "IX_NewMovieMetadata_MovieId");
migrationBuilder.AddPrimaryKey(
"PK_NewMovieMetadata",
"NewMovieMetadata",
"Id");
migrationBuilder.AddForeignKey(
"FK_NewMovieMetadata_Movie_MovieId",
"NewMovieMetadata",
"MovieId",
"Movie",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
"FK_PlayoutProgramScheduleAnchor_Collection_NewCollectionId",
"PlayoutProgramScheduleAnchor",
"NewCollectionId",
"Collection",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
}
}
}

20
ErsatzTV.Infrastructure/Migrations/TvContextModelSnapshot.cs

@ -411,7 +411,7 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -411,7 +411,7 @@ namespace ErsatzTV.Infrastructure.Migrations
b.HasIndex("MovieId");
b.ToTable("NewMovieMetadata");
b.ToTable("MovieMetadata");
});
modelBuilder.Entity("ErsatzTV.Core.Domain.Playout", b =>
@ -471,13 +471,13 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -471,13 +471,13 @@ namespace ErsatzTV.Infrastructure.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("INTEGER");
b.Property<int>("CollectionType")
b.Property<int?>("CollectionId")
.HasColumnType("INTEGER");
b.Property<int?>("MediaItemId")
b.Property<int>("CollectionType")
.HasColumnType("INTEGER");
b.Property<int?>("NewCollectionId")
b.Property<int?>("MediaItemId")
.HasColumnType("INTEGER");
b.Property<int>("PlayoutId")
@ -488,9 +488,9 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -488,9 +488,9 @@ namespace ErsatzTV.Infrastructure.Migrations
b.HasKey("Id");
b.HasIndex("MediaItemId");
b.HasIndex("CollectionId");
b.HasIndex("NewCollectionId");
b.HasIndex("MediaItemId");
b.HasIndex("PlayoutId");
@ -1040,13 +1040,13 @@ namespace ErsatzTV.Infrastructure.Migrations @@ -1040,13 +1040,13 @@ namespace ErsatzTV.Infrastructure.Migrations
modelBuilder.Entity("ErsatzTV.Core.Domain.PlayoutProgramScheduleAnchor", b =>
{
b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem")
b.HasOne("ErsatzTV.Core.Domain.Collection", "Collection")
.WithMany()
.HasForeignKey("MediaItemId");
.HasForeignKey("CollectionId");
b.HasOne("ErsatzTV.Core.Domain.Collection", "Collection")
b.HasOne("ErsatzTV.Core.Domain.MediaItem", "MediaItem")
.WithMany()
.HasForeignKey("NewCollectionId");
.HasForeignKey("MediaItemId");
b.HasOne("ErsatzTV.Core.Domain.Playout", "Playout")
.WithMany("ProgramScheduleAnchors")

Loading…
Cancel
Save