From beb172ba766c744082d17f8261768a9aa2862a9c Mon Sep 17 00:00:00 2001 From: "Collin M. Barrett" Date: Sun, 15 Nov 2020 14:14:41 -0600 Subject: [PATCH] =?UTF-8?q?refactor(archival):=20=E2=99=BB=20push=20Id=20-?= =?UTF-8?q?>=20FileName=20translation=20to=20persistence=20layer?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Commands/ArchiveList.cs | 3 +-- .../ListArchives/ListArchive.cs | 7 ++++--- .../ListArchives/ListArchiveSegment.cs | 1 + .../ListArchives/ListFileName.cs | 21 ------------------- .../Persistence/GitListArchiveRepository.cs | 20 +++++++++++------- 5 files changed, 19 insertions(+), 33 deletions(-) delete mode 100644 services/Archival/FilterLists.Archival.Domain/ListArchives/ListFileName.cs diff --git a/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs b/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs index ebf61e8a7..dfe21f8bd 100644 --- a/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs +++ b/services/Archival/FilterLists.Archival.Application/Commands/ArchiveList.cs @@ -84,8 +84,7 @@ private ListArchive GetList( CancellationToken cancellationToken) { var segmentsAsync = GetSegmentsAsync(segmentUrls, cancellationToken); - var target = new ListFileName(listId); - return new ListArchive(segmentsAsync, target); + return new ListArchive(listId, segmentsAsync); } private async IAsyncEnumerable GetSegmentsAsync( diff --git a/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchive.cs b/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchive.cs index 0d2cba3fe..f70b08edc 100644 --- a/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchive.cs +++ b/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchive.cs @@ -4,13 +4,14 @@ namespace FilterLists.Archival.Domain.ListArchives { public class ListArchive { - public ListArchive(IAsyncEnumerable segments, ListFileName targetFileName) + public ListArchive(int id, IAsyncEnumerable segments) { + Id = id; Segments = segments; - TargetFileName = targetFileName; } + public int Id { get; } + public IAsyncEnumerable Segments { get; } - public ListFileName TargetFileName { get; } } } diff --git a/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchiveSegment.cs b/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchiveSegment.cs index dce317e04..3add18d87 100644 --- a/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchiveSegment.cs +++ b/services/Archival/FilterLists.Archival.Domain/ListArchives/ListArchiveSegment.cs @@ -12,6 +12,7 @@ public ListArchiveSegment(Uri sourceUri, Stream content) } public ListFileExtension Extension { get; } + public Stream Content { get; } } } diff --git a/services/Archival/FilterLists.Archival.Domain/ListArchives/ListFileName.cs b/services/Archival/FilterLists.Archival.Domain/ListArchives/ListFileName.cs deleted file mode 100644 index 17c5b5b20..000000000 --- a/services/Archival/FilterLists.Archival.Domain/ListArchives/ListFileName.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Collections.Generic; -using System.Globalization; -using FilterLists.Archival.Domain.SeedWork; - -namespace FilterLists.Archival.Domain.ListArchives -{ - public sealed class ListFileName : ValueObject - { - public ListFileName(int listId) - { - Value = listId.ToString(CultureInfo.InvariantCulture).PadLeft(5, '0'); - } - - public string Value { get; } - - protected override IEnumerable GetEqualityComponents() - { - return new[] {Value}; - } - } -} diff --git a/services/Archival/FilterLists.Archival.Infrastructure/Persistence/GitListArchiveRepository.cs b/services/Archival/FilterLists.Archival.Infrastructure/Persistence/GitListArchiveRepository.cs index eb7ead1fa..8509622f1 100644 --- a/services/Archival/FilterLists.Archival.Infrastructure/Persistence/GitListArchiveRepository.cs +++ b/services/Archival/FilterLists.Archival.Infrastructure/Persistence/GitListArchiveRepository.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Threading; @@ -39,19 +40,19 @@ public async Task AddAsync(ListArchive listArchive, CancellationToken cancellati if (strategy is default(IStreamToPlainTextConversionStrategy)) { _logger.LogWarning( - "No stream to plain text conversion strategy found for extension {Extension} for target {Target}. Skipping list", + "No stream to plain text conversion strategy found for extension {Extension} for list {ListId}. Skipping list", segment.Extension, - listArchive.TargetFileName.Value); + listArchive.Id); return; } - var fileInfo = GetTargetFile(listArchive.TargetFileName, segmentNumber, segment.Extension); + var fileInfo = GetTargetFile(listArchive.Id, segmentNumber, segment.Extension); if (fileInfo is default(FileInfo)) { _logger.LogWarning( - "Writing from non-plain text extension {Extension} for target {Target} not yet supported. Skipping list", + "Writing from non-plain text extension {Extension} for list {ListId} not yet supported. Skipping list", segment.Extension, - listArchive.TargetFileName.Value); + listArchive.Id); return; } @@ -99,7 +100,7 @@ public void Dispose() _repo.CheckoutPaths("HEAD", _writtenFiles.Select(f => f.Name)); } - private FileInfo? GetTargetFile(ListFileName baseTargetFileName, int segmentNumber, ListFileExtension extension) + private FileInfo? GetTargetFile(int listId, int segmentNumber, ListFileExtension extension) { string targetExtension; if (extension.IsPlainText) @@ -112,10 +113,15 @@ public void Dispose() return default; } - var targetFileName = baseTargetFileName.Value + + var targetFileName = GetTargetFileNamePrefix(listId) + (segmentNumber == 1 ? string.Empty : $"-{segmentNumber}") + targetExtension; return new FileInfo(Path.Combine(_options.RepositoryPath, targetFileName)); } + + private static string GetTargetFileNamePrefix(int listId) + { + return listId.ToString(CultureInfo.InvariantCulture).PadLeft(5, '0'); + } } }