From 4ddeb60d071b8983084c3ec1124fa402315cc714 Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Wed, 17 Nov 2021 16:37:37 -0600 Subject: [PATCH] =?UTF-8?q?refactor(dir):=20=E2=99=BB=20decouple=20FilterL?= =?UTF-8?q?istViewUrl=20app=20model=20from=20domain=20model?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/CreateList.cs | 6 ++++-- .../Aggregates/FilterLists/FilterList.cs | 9 +++++---- .../Aggregates/FilterLists/FilterListViewUrl.cs | 5 +++++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs b/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs index 5c1594f80..26837fa2a 100644 --- a/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs +++ b/services/Directory/FilterLists.Directory.Application/Commands/CreateList.cs @@ -8,7 +8,7 @@ namespace FilterLists.Directory.Application.Commands; public static class CreateList { public record Command(string Name, - ICollection ViewUrls, + IEnumerable ViewUrls, string? Description = default, int? LicenseId = default, Uri? HomeUrl = default, @@ -22,6 +22,8 @@ public record Command(string Name, Uri? DonateUrl = default, string? ChangeReason = default) : IRequest; + public record FilterListViewUrl(short SegmentNumber, short Primariness, Uri Url); + internal class Validator : AbstractValidator { public Validator() @@ -62,7 +64,7 @@ public async Task Handle(Command request, CancellationToken cancellati request.ChatUrl, request.EmailAddress, request.DonateUrl, - request.ViewUrls, + request.ViewUrls.Select(u => (u.SegmentNumber, u.Primariness, u.Url)), request.ChangeReason); _commandContext.FilterLists.Add(filterList); diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs index 2b4e6f8c5..c6b1700b5 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs @@ -28,7 +28,7 @@ private FilterList() public IReadOnlyCollection Changes { get => (IReadOnlyCollection)_changes; - init => _changes = (ICollection)value; + private init => _changes = (ICollection)value; } public static FilterList Create( @@ -44,10 +44,11 @@ public static FilterList Create( Uri? chatUrl, string? emailAddress, Uri? donateUrl, - ICollection viewUrls, + IEnumerable<(short SegmentNumber, short Primariness, Uri Url)> viewUrls, string? createReason) { - if (viewUrls.Count == 0) + var urls = viewUrls.Select(u => FilterListViewUrl.Create(u.SegmentNumber, u.Primariness, u.Url)).ToList(); + if (urls.Count == 0) { throw new ArgumentException("At lest one view URL is required.", nameof(viewUrls)); } @@ -66,7 +67,7 @@ public static FilterList Create( ChatUrl = chatUrl, EmailAddress = emailAddress, DonateUrl = donateUrl, - ViewUrls = (IReadOnlyCollection)viewUrls, + ViewUrls = urls, Changes = new HashSet(new[] { FilterListChange.Create(createReason) }) }; } diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs index 520a4b3c7..bbe6c1929 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterListViewUrl.cs @@ -7,4 +7,9 @@ private FilterListViewUrl() { } public short SegmentNumber { get; private init; } public short Primariness { get; private init; } public Uri Url { get; private init; } = null!; + + internal static FilterListViewUrl Create(short segmentNumber, short primariness, Uri url) + { + return new FilterListViewUrl { SegmentNumber = segmentNumber, Primariness = primariness, Url = url }; + } }