diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/EntityTypeConfigurations/ChangeTypeConfiguration.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/EntityTypeConfigurations/ChangeTypeConfiguration.cs index 5a81d8c26..87ca3bea4 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/EntityTypeConfigurations/ChangeTypeConfiguration.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Commands/EntityTypeConfigurations/ChangeTypeConfiguration.cs @@ -15,11 +15,8 @@ public virtual void Configure(EntityTypeBuilder builder) var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture); builder.ToTable($"{nr.RewriteName(nameof(Change))}s"); - - // TODO: TDiscriminator should really be AggregateType rather than string but needs name rewriting - builder.HasDiscriminator(nr.RewriteName(nameof(Queries.Entities.Change.AggregateType))) - .HasValue(nr.RewriteName(nameof(AggregateType.FilterList))); - + builder.HasDiscriminator(nr.RewriteName(nameof(Queries.Entities.Change.AggregateType))) + .HasValue(AggregateType.FilterList); builder.Property(nameof(Queries.Entities.Change.Id)); } } diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Change.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Change.cs index dca83d979..f6b39cf56 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Change.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Change.cs @@ -1,6 +1,4 @@ -using System.Globalization; -using System.Text.Json; -using EFCore.NamingConventions.Internal; +using System.Text.Json; using FilterLists.Directory.Domain.Aggregates; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; @@ -17,7 +15,7 @@ public record Change public string? RejectedReason { get; private init; } public JsonDocument? AggregateBefore { get; private init; } public JsonDocument? AggregateAfter { get; private init; } - public AggregateType? AggregateType { get; private init; } + public AggregateType AggregateType { get; private init; } public int? FilterListId { get; private init; } public FilterList? FilterList { get; } public string? LanguageIso6391 { get; private init; } @@ -40,29 +38,9 @@ public virtual void Configure(EntityTypeBuilder builder) { builder.Property(c => c.SubmittedAt) .HasDefaultValueSql("CURRENT_TIMESTAMP"); - builder - .Property(c => c.AggregateType) - .HasComputedColumnSql(BuildComputedAggregateTypeSql(), true); builder.HasOne(c => c.Language) .WithMany(l => l.Changes) .HasForeignKey(c => c.LanguageIso6391) .HasConstraintName("fk_changes_languages_language_iso6391"); - - static string BuildComputedAggregateTypeSql() - { - // TODO: register and resolve INameRewriter - var nr = new SnakeCaseNameRewriter(CultureInfo.InvariantCulture); - return $@" - CASE - WHEN {nr.RewriteName(nameof(Change.FilterListId))} IS NOT NULL THEN '{nr.RewriteName(nameof(AggregateType.FilterList))}'::{nr.RewriteName(nameof(AggregateType))} - WHEN {nr.RewriteName(nameof(Change.LanguageIso6391))} IS NOT NULL THEN '{nr.RewriteName(nameof(AggregateType.Language))}'::{nr.RewriteName(nameof(AggregateType))} - WHEN {nr.RewriteName(nameof(Change.LicenseId))} IS NOT NULL THEN '{nr.RewriteName(nameof(AggregateType.License))}'::{nr.RewriteName(nameof(AggregateType))} - WHEN {nr.RewriteName(nameof(Change.MaintainerId))} IS NOT NULL THEN '{nr.RewriteName(nameof(AggregateType.Maintainer))}'::{nr.RewriteName(nameof(AggregateType))} - WHEN {nr.RewriteName(nameof(Change.SoftwareId))} IS NOT NULL THEN '{nr.RewriteName(nameof(AggregateType.Software))}'::{nr.RewriteName(nameof(AggregateType))} - WHEN {nr.RewriteName(nameof(Change.SyntaxId))} IS NOT NULL THEN '{nr.RewriteName(nameof(AggregateType.Syntax))}'::{nr.RewriteName(nameof(AggregateType))} - WHEN {nr.RewriteName(nameof(Change.TagId))} IS NOT NULL THEN '{nr.RewriteName(nameof(AggregateType.Tag))}'::{nr.RewriteName(nameof(AggregateType))} - ELSE NULL - END"; - } } }