mirror of
https://github.com/collinbarrett/FilterLists.git
synced 2026-03-11 09:04:27 +00:00
fix(dir): 🐛 TPH discriminator doesn't need to be generated 🤦
This commit is contained in:
parent
891678f8d4
commit
93e4e2c901
2 changed files with 4 additions and 29 deletions
|
|
@ -15,11 +15,8 @@ public virtual void Configure(EntityTypeBuilder<Change> 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<string>(nr.RewriteName(nameof(Queries.Entities.Change.AggregateType)))
|
||||
.HasValue<FilterListChange>(nr.RewriteName(nameof(AggregateType.FilterList)));
|
||||
|
||||
builder.HasDiscriminator<AggregateType>(nr.RewriteName(nameof(Queries.Entities.Change.AggregateType)))
|
||||
.HasValue<FilterListChange>(AggregateType.FilterList);
|
||||
builder.Property<int>(nameof(Queries.Entities.Change.Id));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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<Change> 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";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue