diff --git a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs index 9fbae6699..e69749f76 100644 --- a/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs +++ b/services/Directory/FilterLists.Directory.Domain/Aggregates/FilterLists/FilterList.cs @@ -10,15 +10,49 @@ namespace FilterLists.Directory.Domain.Aggregates.FilterLists; public class FilterList : Entity, IRequireChangeApproval { + private readonly ICollection _changes = new HashSet(); + private readonly ICollection _dependencyFilterLists = new HashSet(); + private readonly ICollection _dependentFilterLists = new HashSet(); + private readonly ICollection _forkFilterLists = new HashSet(); + private readonly ICollection _includedInFilterLists = new HashSet(); + private readonly ICollection _includesFilterLists = new HashSet(); + private readonly ICollection _languages = new HashSet(); + private readonly ICollection _maintainers = new HashSet(); + private readonly ICollection _syntaxes = new HashSet(); + private readonly ICollection _tags = new HashSet(); + private readonly ICollection _upstreamFilterLists = new HashSet(); + private readonly ICollection _viewUrls = new HashSet(); + protected FilterList() { } public string Name { get; private init; } = default!; public string? Description { get; private init; } public virtual License License { get; private init; } = default!; - public virtual IEnumerable Syntaxes { get; private init; } = new HashSet(); - public virtual IEnumerable Languages { get; private init; } = new HashSet(); - public virtual IEnumerable Tags { get; private init; } = new HashSet(); - public virtual IEnumerable ViewUrls { get; private init; } = new HashSet(); + + public virtual IEnumerable Syntaxes + { + get => _syntaxes; + private init => _syntaxes = new HashSet(value); + } + + public virtual IEnumerable Languages + { + get => _languages; + private init => _languages = new HashSet(value); + } + + public virtual IEnumerable Tags + { + get => _tags; + private init => _tags = new HashSet(value); + } + + public virtual IEnumerable ViewUrls + { + get => _viewUrls; + private init => _viewUrls = new HashSet(value); + } + public Uri? HomeUrl { get; private init; } public Uri? OnionUrl { get; private init; } public Uri? PolicyUrl { get; private init; } @@ -28,14 +62,50 @@ protected FilterList() { } public Uri? ChatUrl { get; private init; } public string? EmailAddress { get; private init; } public Uri? DonateUrl { get; private init; } - public virtual IEnumerable Maintainers { get; private init; } = new HashSet(); - public virtual IEnumerable UpstreamFilterLists { get; private init; } = new HashSet(); - public virtual IEnumerable ForkFilterLists { get; private init; } = new HashSet(); - public virtual IEnumerable IncludedInFilterLists { get; private init; } = new HashSet(); - public virtual IEnumerable IncludesFilterLists { get; private init; } = new HashSet(); - public virtual IEnumerable DependencyFilterLists { get; private init; } = new HashSet(); - public virtual IEnumerable DependentFilterLists { get; private init; } = new HashSet(); - public virtual IEnumerable Changes { get; private set; } = new HashSet(); + + public virtual IEnumerable Maintainers + { + get => _maintainers; + private init => _maintainers = new HashSet(value); + } + + public virtual IEnumerable UpstreamFilterLists + { + get => _upstreamFilterLists; + private init => _upstreamFilterLists = new HashSet(value); + } + + public virtual IEnumerable ForkFilterLists + { + get => _forkFilterLists; + private init => _forkFilterLists = new HashSet(value); + } + + public virtual IEnumerable IncludedInFilterLists + { + get => _includedInFilterLists; + private init => _includedInFilterLists = new HashSet(value); + } + + public virtual IEnumerable IncludesFilterLists + { + get => _includesFilterLists; + private init => _includesFilterLists = new HashSet(value); + } + + public virtual IEnumerable DependencyFilterLists + { + get => _dependencyFilterLists; + private init => _dependencyFilterLists = new HashSet(value); + } + + public virtual IEnumerable DependentFilterLists + { + get => _dependentFilterLists; + private init => _dependentFilterLists = new HashSet(value); + } + + public virtual IEnumerable Changes => _changes; public bool IsApproved { get; private init; } public static FilterList CreatePendingApproval( @@ -103,9 +173,9 @@ public static FilterList CreatePendingApproval( Name = name, Description = description, License = license, - Syntaxes = new HashSet(syntaxes), - Languages = new HashSet(languages), - Tags = new HashSet(tags), + Syntaxes = syntaxes, + Languages = languages, + Tags = tags, ViewUrls = urls, HomeUrl = homeUrl, OnionUrl = onionUrl, @@ -116,7 +186,7 @@ public static FilterList CreatePendingApproval( ChatUrl = chatUrl, EmailAddress = emailAddress, DonateUrl = donateUrl, - Maintainers = new HashSet(maintainers), + Maintainers = maintainers, UpstreamFilterLists = upstreamFilterListSet, ForkFilterLists = forkFilterListSet, IncludedInFilterLists = includedInFilterListSet, @@ -125,7 +195,7 @@ public static FilterList CreatePendingApproval( DependentFilterLists = dependentFilterListSet, IsApproved = false }; - list.Changes = new HashSet(new[] { FilterListChange.Create(list, createReason) }); + list._changes.Add(FilterListChange.Create(list, createReason)); return list; } }