add list's maintainer's lists to list details api endpoint

This commit is contained in:
Collin Barrett 2018-02-25 18:26:52 -06:00
parent 65d550e996
commit cd121872e4
4 changed files with 30 additions and 22 deletions

View file

@ -25,11 +25,11 @@ public async Task<IEnumerable<FilterListSummaryDto>> GetAllSummariesAsync()
.ToListAsync();
}
public async Task<FilterListDetailsDto> GetDetailsAsync(int id)
public async Task<ListDetailsDto> GetDetailsAsync(int id)
{
return await filterListsDbContext.FilterLists
.AsNoTracking()
.ProjectTo<FilterListDetailsDto>()
.ProjectTo<ListDetailsDto>()
.FirstAsync(x => x.Id == id);
}
}

View file

@ -1,10 +1,9 @@
using System;
using System.Collections.Generic;
using FilterLists.Data.Entities;
namespace FilterLists.Services.FilterListService
{
public class FilterListDetailsDto
public class ListDetailsDto
{
public int Id { get; set; }
public string Description { get; set; }
@ -16,11 +15,27 @@ public class FilterListDetailsDto
public string HomeUrl { get; set; }
public string IssuesUrl { get; set; }
public IEnumerable<string> Languages { get; set; }
public IEnumerable<MaintainerDto> Maintainers { get; set; }
public IEnumerable<ListMaintainerDto> Maintainers { get; set; }
public string Name { get; set; }
public string PolicyUrl { get; set; }
public DateTime? PublishedDate { get; set; }
public string SubmissionUrl { get; set; }
public string ViewUrl { get; set; }
}
public class ListMaintainerDto
{
public int Id { get; set; }
public string EmailAddress { get; set; }
public string HomeUrl { get; set; }
public string Name { get; set; }
public string TwitterHandle { get; set; }
public IEnumerable<MaintainerAdditionalListsDto> AdditionalLists { get; set; }
}
public class MaintainerAdditionalListsDto
{
public int Id { get; set; }
public string Name { get; set; }
}
}

View file

@ -1,11 +0,0 @@
namespace FilterLists.Services.FilterListService
{
public class MaintainerDto
{
public int Id { get; set; }
public string EmailAddress { get; set; }
public string HomeUrl { get; set; }
public string Name { get; set; }
public string TwitterHandle { get; set; }
}
}

View file

@ -8,7 +8,12 @@ public class MappingProfiles : Profile
{
public MappingProfiles()
{
CreateMap<FilterList, FilterListDetailsDto>()
CreateMap<FilterList, FilterListSummaryDto>()
.ForMember(dto => dto.Languages,
conf => conf.MapFrom(list =>
list.FilterListLanguages.Select(listLangs => listLangs.Language.Name)));
CreateMap<FilterList, ListDetailsDto>()
.ForMember(dto => dto.Languages,
conf => conf.MapFrom(list =>
list.FilterListLanguages.Select(listLangs => listLangs.Language.Name)))
@ -16,11 +21,10 @@ public MappingProfiles()
conf => conf.MapFrom(list =>
list.FilterListMaintainers.Select(listMaints => listMaints.Maintainer)));
//TODO: improve performance (https://stackoverflow.com/q/48897083/2343739)
CreateMap<FilterList, FilterListSummaryDto>()
.ForMember(dto => dto.Languages,
conf => conf.MapFrom(list =>
list.FilterListLanguages.Select(listLangs => listLangs.Language.Name)));
CreateMap<Maintainer, ListMaintainerDto>()
.ForMember(dto => dto.AdditionalLists,
conf => conf.MapFrom(maint =>
maint.FilterListMaintainers.Select(listMaints => listMaints.FilterList)));
}
}
}