diff --git a/VoidCat/Services/Migrations/FileStoreV2.cs b/VoidCat/Services/Migrations/FileStoreV2.cs index 092feb7..6eb6171 100644 --- a/VoidCat/Services/Migrations/FileStoreV2.cs +++ b/VoidCat/Services/Migrations/FileStoreV2.cs @@ -5,16 +5,21 @@ namespace VoidCat.Services.Migrations; public class FileStoreV2 : IMigration { private readonly VoidSettings _settings; - + public FileStoreV2(VoidSettings settings) { _settings = settings; } - + public int Order => 2; public ValueTask Migrate(string[] args) { var baseDir = Path.Join(_settings.DataDirectory, "files-v1"); + if (!Directory.Exists(baseDir)) + { + return ValueTask.FromResult(IMigration.MigrationResult.Skipped); + } + foreach (var path in Directory.EnumerateFiles(baseDir)) { if (!Guid.TryParse(Path.GetFileNameWithoutExtension(path), out var id)) @@ -28,15 +33,16 @@ public class FileStoreV2 : IMigration { Directory.CreateDirectory(destDir); } + File.Move(MapPathV1(id), dest); } return ValueTask.FromResult(IMigration.MigrationResult.Completed); } - + private string MapPathV1(Guid id) => Path.Join(_settings.DataDirectory, "files-v1", id.ToString()); - + private string MapPathV2(Guid id) => Path.Join(_settings.DataDirectory, "files-v2", id.ToString()[..2], id.ToString()[2..4], id.ToString()); }