From 9043a161e49f0c41b37257ab7548bd9715b57dd1 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 25 Aug 2020 16:55:46 -0500 Subject: [PATCH] =?UTF-8?q?feat(directory):=20=E2=9C=A8=20convert=20ViewUr?= =?UTF-8?q?ls=20to=20owned=20entities?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ....cs => 20200825215253_Initial.Designer.cs} | 118 ++++++++---------- ...6_Initial.cs => 20200825215253_Initial.cs} | 0 .../Migrations/QueryDbContextModelSnapshot.cs | 116 ++++++++--------- .../Queries/Entities/FilterList.cs | 25 ++++ .../Queries/Entities/SegmentViewUrl.cs | 17 --- .../Queries/Entities/SegmentViewUrlMirror.cs | 14 --- 6 files changed, 130 insertions(+), 160 deletions(-) rename services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/{20200825210326_Initial.Designer.cs => 20200825215253_Initial.Designer.cs} (87%) rename services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/{20200825210326_Initial.cs => 20200825215253_Initial.cs} (100%) diff --git a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825210326_Initial.Designer.cs b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825215253_Initial.Designer.cs similarity index 87% rename from services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825210326_Initial.Designer.cs rename to services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825215253_Initial.Designer.cs index 3ab11f169..cc53e217a 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825210326_Initial.Designer.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825215253_Initial.Designer.cs @@ -10,7 +10,7 @@ namespace FilterLists.Directory.Infrastructure.Migrations.Migrations { [DbContext(typeof(QueryDbContext))] - [Migration("20200825210326_Initial")] + [Migration("20200825215253_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -238,52 +238,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.ToTable("Merges"); }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("FilterListId") - .HasColumnType("integer"); - - b.Property("Position") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("FilterListId", "Position") - .IsUnique(); - - b.ToTable("SegmentViewUrls"); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrlMirror", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("SegmentViewUrlId") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("SegmentViewUrlId"); - - b.ToTable("SegmentViewUrlMirrors"); - }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b => { b.Property("Id") @@ -388,6 +342,58 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", "License") .WithMany("FilterLists") .HasForeignKey("LicenseId"); + + b.OwnsMany("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", "SegmentViewUrls", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("FilterListId") + .HasColumnType("integer"); + + b1.Property("Position") + .HasColumnType("integer"); + + b1.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b1.HasKey("Id"); + + b1.HasIndex("FilterListId", "Position") + .IsUnique(); + + b1.ToTable("SegmentViewUrls"); + + b1.WithOwner("FilterList") + .HasForeignKey("FilterListId"); + + b1.OwnsMany("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrlMirror", "SegmentViewUrlMirrors", b2 => + { + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b2.Property("SegmentViewUrlId") + .HasColumnType("integer"); + + b2.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b2.HasKey("Id"); + + b2.HasIndex("SegmentViewUrlId"); + + b2.ToTable("SegmentViewUrlMirrors"); + + b2.WithOwner("SegmentViewUrl") + .HasForeignKey("SegmentViewUrlId"); + }); + }); }); modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b => @@ -480,24 +486,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .IsRequired(); }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") - .WithMany("SegmentViewUrls") - .HasForeignKey("FilterListId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrlMirror", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", "SegmentViewUrl") - .WithMany("SegmentViewUrlMirrors") - .HasForeignKey("SegmentViewUrlId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b => { b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", "Software") diff --git a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825210326_Initial.cs b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825215253_Initial.cs similarity index 100% rename from services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825210326_Initial.cs rename to services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825215253_Initial.cs diff --git a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs index 22a84cfda..d61807247 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs @@ -236,52 +236,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Merges"); }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("FilterListId") - .HasColumnType("integer"); - - b.Property("Position") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("FilterListId", "Position") - .IsUnique(); - - b.ToTable("SegmentViewUrls"); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrlMirror", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("SegmentViewUrlId") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("SegmentViewUrlId"); - - b.ToTable("SegmentViewUrlMirrors"); - }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", b => { b.Property("Id") @@ -386,6 +340,58 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.License", "License") .WithMany("FilterLists") .HasForeignKey("LicenseId"); + + b.OwnsMany("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", "SegmentViewUrls", b1 => + { + b1.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b1.Property("FilterListId") + .HasColumnType("integer"); + + b1.Property("Position") + .HasColumnType("integer"); + + b1.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b1.HasKey("Id"); + + b1.HasIndex("FilterListId", "Position") + .IsUnique(); + + b1.ToTable("SegmentViewUrls"); + + b1.WithOwner("FilterList") + .HasForeignKey("FilterListId"); + + b1.OwnsMany("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrlMirror", "SegmentViewUrlMirrors", b2 => + { + b2.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("integer") + .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); + + b2.Property("SegmentViewUrlId") + .HasColumnType("integer"); + + b2.Property("Url") + .IsRequired() + .HasColumnType("text"); + + b2.HasKey("Id"); + + b2.HasIndex("SegmentViewUrlId"); + + b2.ToTable("SegmentViewUrlMirrors"); + + b2.WithOwner("SegmentViewUrl") + .HasForeignKey("SegmentViewUrlId"); + }); + }); }); modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterListLanguage", b => @@ -478,24 +484,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .IsRequired(); }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") - .WithMany("SegmentViewUrls") - .HasForeignKey("FilterListId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrlMirror", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SegmentViewUrl", "SegmentViewUrl") - .WithMany("SegmentViewUrlMirrors") - .HasForeignKey("SegmentViewUrlId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.SoftwareSyntax", b => { b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Software", "Software") diff --git a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs index 8e5da5a5b..f70ac3147 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs @@ -1,6 +1,8 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities { @@ -33,4 +35,27 @@ public class FilterList public IReadOnlyCollection DependencyFilterLists { get; private set; } = new HashSet(); public IReadOnlyCollection DependentFilterLists { get; private set; } = new HashSet(); } + + internal class FilterListTypeConfiguration : IEntityTypeConfiguration + { + public virtual void Configure(EntityTypeBuilder builder) + { + _ = builder ?? throw new ArgumentNullException(nameof(builder)); + + builder.OwnsMany(fl => fl.SegmentViewUrls, + o => + { + o.ToTable(nameof(SegmentViewUrl) + "s"); + o.HasKey("Id"); + o.HasIndex(nameof(FilterList) + "Id", nameof(SegmentViewUrl.Position)).IsUnique(); + o.OwnsMany(p => p.SegmentViewUrlMirrors, + m => + { + m.ToTable(nameof(SegmentViewUrlMirror) + "s"); + m.Property("Id"); + m.HasKey("Id"); + }); + }); + } + } } \ No newline at end of file diff --git a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrl.cs b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrl.cs index 54d48fc61..e5b2ca250 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrl.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrl.cs @@ -1,32 +1,15 @@ using System; using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities { [SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")] public class SegmentViewUrl { - public int Id { get; private set; } - public int FilterListId { get; set; } public FilterList FilterList { get; private set; } = null!; public int Position { get; private set; } public Uri Url { get; private set; } = null!; public IReadOnlyCollection SegmentViewUrlMirrors { get; private set; } = new HashSet(); } - - internal class ViewUrlPartialTypeConfiguration : IEntityTypeConfiguration - { - public virtual void Configure(EntityTypeBuilder builder) - { - _ = builder ?? throw new ArgumentNullException(nameof(builder)); - - builder.ToTable(nameof(SegmentViewUrl) + "s"); - - builder.HasIndex(s => new {s.FilterListId, s.Position}) - .IsUnique(); - } - } } \ No newline at end of file diff --git a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrlMirror.cs b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrlMirror.cs index 4ca4ef2e5..285215e70 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrlMirror.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrlMirror.cs @@ -1,26 +1,12 @@ using System; using System.Diagnostics.CodeAnalysis; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities { [SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")] public class SegmentViewUrlMirror { - public int Id { get; private set; } - public int SegmentViewUrlId { get; private set; } public SegmentViewUrl SegmentViewUrl { get; private set; } = null!; public Uri Url { get; private set; } = null!; } - - internal class ViewUrlMirrorTypeConfiguration : IEntityTypeConfiguration - { - public virtual void Configure(EntityTypeBuilder builder) - { - _ = builder ?? throw new ArgumentNullException(nameof(builder)); - - builder.ToTable(nameof(SegmentViewUrlMirror) + "s"); - } - } } \ No newline at end of file