From 991a6c7713324ecc9cdbc9928427e01dd6e4b49d Mon Sep 17 00:00:00 2001 From: Kieran Date: Wed, 6 Jul 2022 22:52:21 +0100 Subject: [PATCH] Fix size --- VoidCat/Program.cs | 1 + VoidCat/Services/Migrations/FixSize.cs | 38 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 VoidCat/Services/Migrations/FixSize.cs diff --git a/VoidCat/Program.cs b/VoidCat/Program.cs index a913240..21fab56 100644 --- a/VoidCat/Program.cs +++ b/VoidCat/Program.cs @@ -132,6 +132,7 @@ services.AddAuthorization((opt) => services.AddTransient(); services.AddTransient(); services.AddTransient(); +services.AddTransient(); // file storage services.AddStorage(voidSettings); diff --git a/VoidCat/Services/Migrations/FixSize.cs b/VoidCat/Services/Migrations/FixSize.cs new file mode 100644 index 0000000..599d103 --- /dev/null +++ b/VoidCat/Services/Migrations/FixSize.cs @@ -0,0 +1,38 @@ +using VoidCat.Model; +using VoidCat.Services.Abstractions; + +namespace VoidCat.Services.Migrations; + +public class FixSize : IMigration +{ + private readonly ILogger _logger; + private readonly IFileMetadataStore _fileMetadata; + private readonly IFileStore _fileStore; + + public FixSize(ILogger logger, IFileMetadataStore fileMetadata, IFileStore fileStore) + { + _logger = logger; + _fileMetadata = fileMetadata; + _fileStore = fileStore; + } + + public async ValueTask Migrate(string[] args) + { + var files = await _fileMetadata.ListFiles(new(0, int.MaxValue)); + await foreach (var file in files.Results) + { + var fs = await _fileStore.Open(new(file.Id, Enumerable.Empty()), CancellationToken.None); + if (file.Size != (ulong) fs.Length) + { + _logger.LogInformation("Updating file size {Id} to {Size}", file.Id, fs.Length); + var newFile = file with + { + Size = (ulong) fs.Length + }; + await _fileMetadata.Set(newFile.Id, newFile); + } + } + + return IMigration.MigrationResult.Completed; + } +} \ No newline at end of file