From fe87f5b4cf686497ad2e3225e61a63e714e2a451 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sat, 13 Nov 2021 05:09:09 -0600 Subject: [PATCH] =?UTF-8?q?refactor(dir):=20=E2=99=BB=20use=20FKs=20to=20l?= =?UTF-8?q?ink=20Changes=20to=20Aggregates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Aggregates/Changes/AggregateRoot.cs | 12 ------- .../Aggregates/Changes/Change.cs | 31 ++++++++++++------- .../Queries/Context/QueryDbContext.cs | 2 -- .../Persistence/Queries/Entities/Change.cs | 22 ++++++++++--- .../Queries/Entities/FilterList.cs | 1 + .../Persistence/Queries/Entities/Language.cs | 1 + .../Persistence/Queries/Entities/License.cs | 1 + .../Queries/Entities/Maintainer.cs | 1 + .../Persistence/Queries/Entities/Software.cs | 1 + .../Persistence/Queries/Entities/Syntax.cs | 1 + .../Persistence/Queries/Entities/Tag.cs | 1 + 11 files changed, 44 insertions(+), 30 deletions(-) delete mode 100644 services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/AggregateRoot.cs diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/AggregateRoot.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/AggregateRoot.cs deleted file mode 100644 index c884d1a83..000000000 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/AggregateRoot.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace FilterLists.Directory.Domain.Aggregates.Changes; - -public enum AggregateRoot -{ - FilterList, - Language, - License, - Maintainer, - Software, - Syntax, - Tag -} diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/Change.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/Change.cs index 9fef1081c..a8421ceab 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/Change.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/Changes/Change.cs @@ -1,4 +1,5 @@ using System.Text.Json; +using FilterLists.Directory.Domain.Aggregates.Licenses; namespace FilterLists.Directory.Domain.Aggregates.Changes; @@ -8,20 +9,26 @@ private Change() { } - public Change(ChangeType type, AggregateRoot aggregateRoot, int aggregateRootId, JsonDocument? aggregate) + public Change(ChangeType type) { Type = type; - AggregateRoot = aggregateRoot; - AggregateRootId = aggregateRootId; - Aggregate = aggregate; } - public ChangeType Type { get; private init; } - public AggregateRoot AggregateRoot { get; private init; } - public int AggregateRootId { get; private init; } - public JsonDocument? Aggregate { get; private init; } - public DateTime CreatedAt { get; private init; } - public DateTime? AppliedAt { get; private init; } - public DateTime? RejectedAt { get; private init; } - public string? RejectedReason { get; private init; } + public ChangeType Type { get; init; } + public JsonDocument? AggregateBefore { get; init; } + public JsonDocument? AggregateAfter { get; init; } + + public DateTime CreatedAt { get; init; } + public string? CreatedReason { get; init; } + public DateTime? AppliedAt { get; init; } + public DateTime? RejectedAt { get; init; } + public string? RejectedReason { get; init; } + + public FilterList? FilterList { get; init; } + //public Language? Language { get; } + public License? License { get; init; } + //public Maintainer? Maintainer { get; } + //public Software? Software { get; } + //public Syntax? Syntax { get; } + //public Tag? Tag { get; } } diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs index 28b8150a4..153f34e81 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Context/QueryDbContext.cs @@ -11,7 +11,6 @@ public class QueryDbContext : DbContext static QueryDbContext() { NpgsqlConnection.GlobalTypeMapper.MapEnum(); - NpgsqlConnection.GlobalTypeMapper.MapEnum(); } public QueryDbContext(DbContextOptions options) : base(options) @@ -44,6 +43,5 @@ protected override void OnModelCreating(ModelBuilder modelBuilder) modelBuilder.ApplyConfigurationsFromAssembly(GetType().Assembly, type => type.Namespace == typeof(FilterListTypeConfiguration).Namespace); modelBuilder.HasPostgresEnum(); - modelBuilder.HasPostgresEnum(); } } 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 67c41c8cf..9802b5e60 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Change.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Change.cs @@ -5,17 +5,31 @@ namespace FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; -public class Change +public record Change { public int Id { get; init; } public ChangeType Type { get; init; } - public AggregateRoot AggregateRoot { get; init; } - public int AggregateRootId { get; init; } - public JsonDocument? Aggregate { get; init; } + public JsonDocument? AggregateBefore { get; init; } + public JsonDocument? AggregateAfter { get; init; } public DateTime CreatedAt { get; init; } + public string? CreatedReason { get; init; } public DateTime? AppliedAt { get; init; } public DateTime? RejectedAt { get; init; } public string? RejectedReason { get; init; } + public int? FilterListId { get; init; } + public FilterList? FilterList { get; } + public string? LanguageIso6391 { get; init; } + public Language? Language { get; } + public int? LicenseId { get; init; } + public License? License { get; } + public int? MaintainerId { get; init; } + public Maintainer? Maintainer { get; } + public int? SoftwareId { get; init; } + public Software? Software { get; } + public int? SyntaxId { get; init; } + public Syntax? Syntax { get; } + public int? TagId { get; init; } + public Tag? Tag { get; } } internal class UpdateConfiguration : IEntityTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs index dc044fe47..ea7e31aa3 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/FilterList.cs @@ -29,6 +29,7 @@ public record FilterList : AggregateRoot public IEnumerable IncludesFilterLists { get; init; } = new HashSet(); public IEnumerable DependencyFilterLists { get; init; } = new HashSet(); public IEnumerable DependentFilterLists { get; init; } = new HashSet(); + public IEnumerable Changes { get; init; } = new HashSet(); } internal class FilterListTypeConfiguration : AggregateRootTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs index 5735e694c..ff0e50583 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Language.cs @@ -8,6 +8,7 @@ public record Language : AggregateRoot public string Iso6391 { get; init; } = null!; public string Name { get; init; } = null!; public IEnumerable FilterListLanguages { get; init; } = new HashSet(); + public IEnumerable Changes { get; init; } = new HashSet(); } internal class LanguageTypeConfiguration : AggregateRootTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs index c2372d72c..ebd68d2a7 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/License.cs @@ -11,6 +11,7 @@ public record License : AggregateRoot public bool PermitsDistribution { get; init; } public bool PermitsCommercialUse { get; init; } public IEnumerable FilterLists { get; init; } = new HashSet(); + public IEnumerable Changes { get; init; } = new HashSet(); } internal class LicenseTypeConfiguration : AggregateRootTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs index e4799e1bb..67ba8ff08 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Maintainer.cs @@ -9,6 +9,7 @@ public record Maintainer : AggregateRoot public string? EmailAddress { get; init; } public string? TwitterHandle { get; init; } public IEnumerable FilterListMaintainers { get; init; } = new HashSet(); + public IEnumerable Changes { get; init; } = new HashSet(); } internal class MaintainerTypeConfiguration : AggregateRootTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs index 2d4558f4c..d6753c7e7 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Software.cs @@ -11,6 +11,7 @@ public record Software : AggregateRoot public Uri? DownloadUrl { get; init; } public bool SupportsAbpUrlScheme { get; init; } public IEnumerable SoftwareSyntaxes { get; init; } = new HashSet(); + public IEnumerable Changes { get; init; } = new HashSet(); } internal class SoftwareTypeConfiguration : AggregateRootTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs index 07b6a4ea7..14f5f537b 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Syntax.cs @@ -9,6 +9,7 @@ public record Syntax : AggregateRoot public Uri? Url { get; init; } public IEnumerable FilterListSyntaxes { get; init; } = new HashSet(); public IEnumerable SoftwareSyntaxes { get; init; } = new HashSet(); + public IEnumerable Changes { get; init; } = new HashSet(); } internal class SyntaxTypeConfiguration : AggregateRootTypeConfiguration diff --git a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs index d5c82efaf..8c18ede48 100644 --- a/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs +++ b/services/Directory/FilterLists.Directory.Infrastructure/Persistence/Queries/Entities/Tag.cs @@ -7,6 +7,7 @@ public record Tag : AggregateRoot public string Name { get; init; } = null!; public string? Description { get; init; } public IEnumerable FilterListTags { get; init; } = new HashSet(); + public IEnumerable Changes { get; init; } = new HashSet(); } internal class TagTypeConfiguration : AggregateRootTypeConfiguration