From 46e98c293cc56906334c5fbbf116dc5dbb9ed6fd Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Tue, 25 Aug 2020 17:35:14 -0500 Subject: [PATCH] =?UTF-8?q?feat(directory):=20=E2=9C=A8=20automap=20GetLis?= =?UTF-8?q?ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Queries/GetLists.cs | 93 ++++++++----------- .../Queries/GetMaintainers.cs | 5 +- 2 files changed, 42 insertions(+), 56 deletions(-) diff --git a/services/directory/src/FilterLists.Directory.Application/Queries/GetLists.cs b/services/directory/src/FilterLists.Directory.Application/Queries/GetLists.cs index 39b79b552..53ef07493 100644 --- a/services/directory/src/FilterLists.Directory.Application/Queries/GetLists.cs +++ b/services/directory/src/FilterLists.Directory.Application/Queries/GetLists.cs @@ -1,9 +1,11 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; +using AutoMapper; +using AutoMapper.QueryableExtensions; using FilterLists.Directory.Infrastructure.Persistence.Queries.Context; +using FilterLists.Directory.Infrastructure.Persistence.Queries.Entities; using MediatR; using Microsoft.EntityFrameworkCore; @@ -18,10 +20,12 @@ public class Query : IRequest> public class Handler : IRequestHandler> { private readonly IQueryContext _context; + private readonly IMapper _mapper; - public Handler(IQueryContext context) + public Handler(IQueryContext context, IMapper mapper) { _context = context; + _mapper = mapper; } public async Task> Handle( @@ -29,62 +33,47 @@ public async Task> Handle( CancellationToken cancellationToken) { return await _context.FilterLists - .Select(fl => new ListViewModel - { - Id = fl.Id, - Name = fl.Name, - Description = fl.Description, - LicenseId = fl.License == null - ? default - : fl.License.Id, - SyntaxId = fl.FilterListSyntaxes.Any() - ? fl.FilterListSyntaxes.First().Syntax.Id - : default, - LanguageIds = fl.FilterListLanguages.Select(fll => fll.Language.Iso6391), - TagIds = fl.FilterListTags.Select(flt => flt.Tag.Id), - ViewUrl = fl.SegmentViewUrls.Any() - ? fl.SegmentViewUrls.OrderBy(s => s.Position).First().Url - : default, - ViewUrlMirrors = fl.SegmentViewUrls.Any() - ? fl.SegmentViewUrls.OrderBy(s => s.Position) - .First() - .SegmentViewUrlMirrors - .Select(m => m.Url) - : default, - HomeUrl = fl.HomeUrl, - PolicyUrl = fl.PolicyUrl, - SubmissionUrl = fl.SubmissionUrl, - IssuesUrl = fl.IssuesUrl, - ForumUrl = fl.ForumUrl, - ChatUrl = fl.ChatUrl, - EmailAddress = fl.EmailAddress, - DonateUrl = fl.DonateUrl, - MaintainerIds = fl.FilterListMaintainers.Select(flm => flm.Maintainer.Id) - }) + .ProjectTo(_mapper.ConfigurationProvider) .ToListAsync(cancellationToken); } } + public class ListViewModelProfile : Profile + { + public ListViewModelProfile() + { + CreateMap(); + } + } + public class ListViewModel { - public int Id { get; set; } - public string Name { get; set; } = null!; - public string? Description { get; set; } - public int? LicenseId { get; set; } - public int? SyntaxId { get; set; } - public IEnumerable? LanguageIds { get; set; } - public IEnumerable? TagIds { get; set; } - public Uri? ViewUrl { get; set; } - public IEnumerable? ViewUrlMirrors { get; set; } - public Uri? HomeUrl { get; set; } - public Uri? PolicyUrl { get; set; } - public Uri? SubmissionUrl { get; set; } - public Uri? IssuesUrl { get; set; } - public Uri? ForumUrl { get; set; } - public Uri? ChatUrl { get; set; } - public string? EmailAddress { get; set; } - public Uri? DonateUrl { get; set; } - public IEnumerable? MaintainerIds { get; set; } + public int Id { get; private set; } + public string Name { get; private set; } = null!; + public string? Description { get; private set; } + public int? LicenseId { get; private set; } + public IEnumerable? SyntaxIds { get; private set; } + public IEnumerable? LanguageIso6391s { get; private set; } + + public IEnumerable? TagIds { get; private set; } + + //public IEnumerable? SegmentViewUrls { get; private set; } + public Uri? HomeUrl { get; private set; } + public Uri? OnionUrl { get; private set; } + public Uri? PolicyUrl { get; private set; } + public Uri? SubmissionUrl { get; private set; } + public Uri? IssuesUrl { get; private set; } + public Uri? ForumUrl { get; private set; } + public Uri? ChatUrl { get; private set; } + public string? EmailAddress { get; private set; } + public Uri? DonateUrl { get; private set; } + public IEnumerable? MaintainerIds { get; private set; } + public IEnumerable? UpstreamFilterListIds { get; private set; } + public IEnumerable? ForkFilterListIds { get; private set; } + public IEnumerable? IncludedInFilterListIds { get; private set; } + public IEnumerable? IncludesFilterListIds { get; private set; } + public IEnumerable? DependencyFilterListIds { get; private set; } + public IEnumerable? DependentFilterListIds { get; private set; } } } } \ No newline at end of file diff --git a/services/directory/src/FilterLists.Directory.Application/Queries/GetMaintainers.cs b/services/directory/src/FilterLists.Directory.Application/Queries/GetMaintainers.cs index 89db24781..9611c2aaa 100644 --- a/services/directory/src/FilterLists.Directory.Application/Queries/GetMaintainers.cs +++ b/services/directory/src/FilterLists.Directory.Application/Queries/GetMaintainers.cs @@ -1,6 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; using System.Threading; using System.Threading.Tasks; using AutoMapper; @@ -43,9 +42,7 @@ public class MaintainerViewModelProfile : Profile { public MaintainerViewModelProfile() { - CreateMap() - .ForMember(m => m.FilterListIds, - o => o.MapFrom(m => m.FilterListMaintainers.Select(flm => flm.FilterListId))); + CreateMap(); } }