From eb70b7e70e000883701929fd64388dab6b0bc5af Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 25 Aug 2020 05:23:40 -0500 Subject: [PATCH] =?UTF-8?q?refactor(persistence):=20=E2=99=BB=20extract=20?= =?UTF-8?q?'SegmentViewUrls'=20and=20'SegmentViewUrlMirrors'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...Directory.Infrastructure.Migrations.csproj | 4 + ....cs => 20200825102124_Initial.Designer.cs} | 129 +++++++++--------- ...3_Initial.cs => 20200825102124_Initial.cs} | 51 ++++--- .../Migrations/QueryDbContextModelSnapshot.cs | 127 ++++++++--------- .../Queries/Entities/FilterList.cs | 4 +- .../{ViewUrlPartial.cs => SegmentViewUrl.cs} | 19 ++- ...ewUrlMirror.cs => SegmentViewUrlMirror.cs} | 16 +-- 7 files changed, 187 insertions(+), 163 deletions(-) rename services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/{20200824012903_Initial.Designer.cs => 20200825102124_Initial.Designer.cs} (94%) rename services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/{20200824012903_Initial.cs => 20200825102124_Initial.cs} (93%) rename services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/{ViewUrlPartial.cs => SegmentViewUrl.cs} (50%) rename services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/{ViewUrlMirror.cs => SegmentViewUrlMirror.cs} (53%) diff --git a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj index 4daba1795..5c237b511 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj +++ b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/FilterLists.Directory.Infrastructure.Migrations.csproj @@ -35,4 +35,8 @@ + + + + \ No newline at end of file diff --git a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.Designer.cs b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825102124_Initial.Designer.cs similarity index 94% rename from services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.Designer.cs rename to services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825102124_Initial.Designer.cs index 58a544287..19e257f34 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.Designer.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825102124_Initial.Designer.cs @@ -1,15 +1,16 @@ // - +using System; using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace FilterLists.Directory.Infrastructure.Migrations.Migrations { [DbContext(typeof(QueryDbContext))] - [Migration("20200824012903_Initial")] + [Migration("20200825102124_Initial")] partial class Initial { protected override void BuildTargetModel(ModelBuilder modelBuilder) @@ -79,10 +80,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.Property("SubmissionUrl") .HasColumnType("text"); - b.Property("ViewUrl") - .IsRequired() - .HasColumnType("text"); - b.HasKey("Id"); b.HasIndex("LicenseId"); @@ -241,6 +238,52 @@ 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") @@ -325,44 +368,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) b.ToTable("Tags"); }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("FilterListId") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("FilterListId"); - - b.ToTable("ViewUrlMirrors"); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => - { - b.Property("FilterListId") - .HasColumnType("integer"); - - b.Property("Position") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("FilterListId", "Position"); - - b.ToTable("ViewUrlPartials"); - }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b => { b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependencyFilterList") @@ -475,6 +480,24 @@ 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") @@ -489,24 +512,6 @@ protected override void BuildTargetModel(ModelBuilder modelBuilder) .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") - .WithMany("ViewUrlMirrors") - .HasForeignKey("FilterListId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") - .WithMany("ViewUrlPartials") - .HasForeignKey("FilterListId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); #pragma warning restore 612, 618 } } diff --git a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.cs b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825102124_Initial.cs similarity index 93% rename from services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.cs rename to services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825102124_Initial.cs index 2bc25e483..3348df95f 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200824012903_Initial.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/20200825102124_Initial.cs @@ -105,7 +105,6 @@ protected override void Up(MigrationBuilder migrationBuilder) Name = table.Column(nullable: false), Description = table.Column(nullable: true), LicenseId = table.Column(nullable: true), - ViewUrl = table.Column(nullable: false), HomeUrl = table.Column(nullable: true), OnionUrl = table.Column(nullable: true), PolicyUrl = table.Column(nullable: true), @@ -320,19 +319,20 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "ViewUrlMirrors", + name: "SegmentViewUrls", columns: table => new { Id = table.Column(nullable: false) .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), FilterListId = table.Column(nullable: false), + Position = table.Column(nullable: false), Url = table.Column(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_ViewUrlMirrors", x => x.Id); + table.PrimaryKey("PK_SegmentViewUrls", x => x.Id); table.ForeignKey( - name: "FK_ViewUrlMirrors_FilterLists_FilterListId", + name: "FK_SegmentViewUrls_FilterLists_FilterListId", column: x => x.FilterListId, principalTable: "FilterLists", principalColumn: "Id", @@ -340,20 +340,21 @@ protected override void Up(MigrationBuilder migrationBuilder) }); migrationBuilder.CreateTable( - name: "ViewUrlPartials", + name: "SegmentViewUrlMirrors", columns: table => new { - Position = table.Column(nullable: false), - FilterListId = table.Column(nullable: false), + Id = table.Column(nullable: false) + .Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn), + SegmentViewUrlId = table.Column(nullable: false), Url = table.Column(nullable: false) }, constraints: table => { - table.PrimaryKey("PK_ViewUrlPartials", x => new { x.FilterListId, x.Position }); + table.PrimaryKey("PK_SegmentViewUrlMirrors", x => x.Id); table.ForeignKey( - name: "FK_ViewUrlPartials_FilterLists_FilterListId", - column: x => x.FilterListId, - principalTable: "FilterLists", + name: "FK_SegmentViewUrlMirrors_SegmentViewUrls_SegmentViewUrlId", + column: x => x.SegmentViewUrlId, + principalTable: "SegmentViewUrls", principalColumn: "Id", onDelete: ReferentialAction.Cascade); }); @@ -398,15 +399,21 @@ protected override void Up(MigrationBuilder migrationBuilder) table: "Merges", column: "IncludesFilterListId"); + migrationBuilder.CreateIndex( + name: "IX_SegmentViewUrlMirrors_SegmentViewUrlId", + table: "SegmentViewUrlMirrors", + column: "SegmentViewUrlId"); + + migrationBuilder.CreateIndex( + name: "IX_SegmentViewUrls_FilterListId_Position", + table: "SegmentViewUrls", + columns: new[] { "FilterListId", "Position" }, + unique: true); + migrationBuilder.CreateIndex( name: "IX_SoftwareSyntaxes_SyntaxId", table: "SoftwareSyntaxes", column: "SyntaxId"); - - migrationBuilder.CreateIndex( - name: "IX_ViewUrlMirrors_FilterListId", - table: "ViewUrlMirrors", - column: "FilterListId"); } protected override void Down(MigrationBuilder migrationBuilder) @@ -432,15 +439,12 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "Merges"); + migrationBuilder.DropTable( + name: "SegmentViewUrlMirrors"); + migrationBuilder.DropTable( name: "SoftwareSyntaxes"); - migrationBuilder.DropTable( - name: "ViewUrlMirrors"); - - migrationBuilder.DropTable( - name: "ViewUrlPartials"); - migrationBuilder.DropTable( name: "Languages"); @@ -450,6 +454,9 @@ protected override void Down(MigrationBuilder migrationBuilder) migrationBuilder.DropTable( name: "Tags"); + migrationBuilder.DropTable( + name: "SegmentViewUrls"); + migrationBuilder.DropTable( name: "Software"); 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 60f96ef33..db363785a 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure.Migrations/Migrations/QueryDbContextModelSnapshot.cs @@ -1,8 +1,9 @@ // - +using System; using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Npgsql.EntityFrameworkCore.PostgreSQL.Metadata; namespace FilterLists.Directory.Infrastructure.Migrations.Migrations @@ -77,10 +78,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("SubmissionUrl") .HasColumnType("text"); - b.Property("ViewUrl") - .IsRequired() - .HasColumnType("text"); - b.HasKey("Id"); b.HasIndex("LicenseId"); @@ -239,6 +236,52 @@ 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") @@ -323,44 +366,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.ToTable("Tags"); }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("integer") - .HasAnnotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn); - - b.Property("FilterListId") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("Id"); - - b.HasIndex("FilterListId"); - - b.ToTable("ViewUrlMirrors"); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => - { - b.Property("FilterListId") - .HasColumnType("integer"); - - b.Property("Position") - .HasColumnType("integer"); - - b.Property("Url") - .IsRequired() - .HasColumnType("text"); - - b.HasKey("FilterListId", "Position"); - - b.ToTable("ViewUrlPartials"); - }); - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.Dependent", b => { b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "DependencyFilterList") @@ -473,6 +478,24 @@ 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") @@ -487,24 +510,6 @@ protected override void BuildModel(ModelBuilder modelBuilder) .OnDelete(DeleteBehavior.Cascade) .IsRequired(); }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlMirror", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") - .WithMany("ViewUrlMirrors") - .HasForeignKey("FilterListId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.ViewUrlPartial", b => - { - b.HasOne("FilterLists.Directory.Infrastructure.Persistence.Queries.Entities.FilterList", "FilterList") - .WithMany("ViewUrlPartials") - .HasForeignKey("FilterListId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); #pragma warning restore 612, 618 } } 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 a0534107c..90383e4e4 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 @@ -15,9 +15,7 @@ public class FilterList public IReadOnlyCollection FilterListSyntaxes { get; private set; } = new HashSet(); public IReadOnlyCollection FilterListLanguages { get; private set; } = new HashSet(); public IReadOnlyCollection FilterListTags { get; private set; } = new HashSet(); - public Uri ViewUrl { get; private set; } = null!; - public IReadOnlyCollection ViewUrlPartials { get; private set; } = new HashSet(); - public IReadOnlyCollection ViewUrlMirrors { get; private set; } = new HashSet(); + public IReadOnlyCollection SegmentViewUrls { get; private set; } = new HashSet(); public Uri? HomeUrl { get; private set; } public Uri? OnionUrl { get; private set; } public Uri? PolicyUrl { get; private set; } diff --git a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/ViewUrlPartial.cs b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrl.cs similarity index 50% rename from services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/ViewUrlPartial.cs rename to services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrl.cs index dfd599edd..7dd1a7366 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/ViewUrlPartial.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrl.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Diagnostics.CodeAnalysis; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -6,24 +7,28 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities { [SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")] - public class ViewUrlPartial + public class SegmentViewUrl { 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 + internal class ViewUrlPartialTypeConfiguration : IEntityTypeConfiguration { - public virtual void Configure(EntityTypeBuilder builder) + public virtual void Configure(EntityTypeBuilder builder) { _ = builder ?? throw new ArgumentNullException(nameof(builder)); - builder.ToTable(nameof(ViewUrlPartial) + "s"); + builder.ToTable(nameof(SegmentViewUrl) + "s"); - const string filterListId = nameof(ViewUrlPartial.FilterList) + "Id"; - builder.Property(filterListId); - builder.HasKey(filterListId, nameof(ViewUrlPartial.Position)); + const string segmentViewUrlId = "Id"; + builder.Property(segmentViewUrlId); + builder.HasKey(segmentViewUrlId); + + builder.HasIndex(nameof(FilterList) + "Id", nameof(SegmentViewUrl.Position)) + .IsUnique(); } } } \ No newline at end of file diff --git a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/ViewUrlMirror.cs b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrlMirror.cs similarity index 53% rename from services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/ViewUrlMirror.cs rename to services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrlMirror.cs index c7baa6ae3..df95f7bc5 100644 --- a/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/ViewUrlMirror.cs +++ b/services/directory/src/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/SegmentViewUrlMirror.cs @@ -6,23 +6,23 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities { [SuppressMessage("ReSharper", "AutoPropertyCanBeMadeGetOnly.Local")] - public class ViewUrlMirror + public class SegmentViewUrlMirror { - public FilterList FilterList { get; private set; } = null!; + public SegmentViewUrl SegmentViewUrl { get; private set; } = null!; public Uri Url { get; private set; } = null!; } - internal class ViewUrlMirrorTypeConfiguration : IEntityTypeConfiguration + internal class ViewUrlMirrorTypeConfiguration : IEntityTypeConfiguration { - public virtual void Configure(EntityTypeBuilder builder) + public virtual void Configure(EntityTypeBuilder builder) { _ = builder ?? throw new ArgumentNullException(nameof(builder)); - builder.ToTable(nameof(ViewUrlMirror) + "s"); + builder.ToTable(nameof(SegmentViewUrlMirror) + "s"); - const string viewUrlMirrorId = "Id"; - builder.Property(viewUrlMirrorId); - builder.HasKey(viewUrlMirrorId); + const string segmentViewUrlMirrorId = "Id"; + builder.Property(segmentViewUrlMirrorId); + builder.HasKey(segmentViewUrlMirrorId); } } } \ No newline at end of file