refactor(archival): ♻ only fetch most primary url for each list segment

This commit is contained in:
Collin M. Barrett 2020-09-14 20:48:18 -05:00
parent 25c726b9a2
commit 6581ba3eee

View file

@ -43,7 +43,11 @@ public async Task<Unit> Handle(Command request, CancellationToken cancellationTo
_logger.LogDebug("Archiving list {ListId}", request.ListId);
var listDetails = await _directory.GetListDetailsAsync(request.ListId, cancellationToken);
var segments = listDetails.ViewUrls?.GroupBy(u => u.SegmentNumber).ToList();
var segments = listDetails.ViewUrls?
.GroupBy(u => u.SegmentNumber)
.Select(g => g.OrderBy(u => u.Primariness))
.First()
.ToList();
if (segments != null)
{
@ -53,14 +57,14 @@ public async Task<Unit> Handle(Command request, CancellationToken cancellationTo
Stream? contents = default; // TODO: fetch list file stream
var path = Path.Combine(
listDetails.Id.ToString(CultureInfo.InvariantCulture),
segment.Key.ToString(CultureInfo.InvariantCulture));
_logger.LogDebug("Archiving segment {SegmentNumber} of list {ListId}", segment.Key, request.ListId);
segment.SegmentNumber.ToString(CultureInfo.InvariantCulture));
_logger.LogDebug("Archiving segment {SegmentNumber} of list {ListId}", segment.SegmentNumber, request.ListId);
archiveTasks.Add(_archiver.ArchiveFileAsync(contents, path, cancellationToken));
}
await Task.WhenAll(archiveTasks);
_archiver.Commit();
_logger.LogDebug("Archived segments {@SegmentNumbers} of list {ListId}", segments.Select(s => s.Key), request.ListId);
_logger.LogDebug("Archived segments {@SegmentNumbers} of list {ListId}", segments.Select(s => s.SegmentNumber), request.ListId);
}
else
{