Skip files-v2 if no v1 dir

This commit is contained in:
Kieran 2023-11-03 01:23:31 +09:00
parent 6481eb54f0
commit 72047a5098
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941

View File

@ -5,16 +5,21 @@ namespace VoidCat.Services.Migrations;
public class FileStoreV2 : IMigration public class FileStoreV2 : IMigration
{ {
private readonly VoidSettings _settings; private readonly VoidSettings _settings;
public FileStoreV2(VoidSettings settings) public FileStoreV2(VoidSettings settings)
{ {
_settings = settings; _settings = settings;
} }
public int Order => 2; public int Order => 2;
public ValueTask<IMigration.MigrationResult> Migrate(string[] args) public ValueTask<IMigration.MigrationResult> Migrate(string[] args)
{ {
var baseDir = Path.Join(_settings.DataDirectory, "files-v1"); 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)) foreach (var path in Directory.EnumerateFiles(baseDir))
{ {
if (!Guid.TryParse(Path.GetFileNameWithoutExtension(path), out var id)) if (!Guid.TryParse(Path.GetFileNameWithoutExtension(path), out var id))
@ -28,15 +33,16 @@ public class FileStoreV2 : IMigration
{ {
Directory.CreateDirectory(destDir); Directory.CreateDirectory(destDir);
} }
File.Move(MapPathV1(id), dest); File.Move(MapPathV1(id), dest);
} }
return ValueTask.FromResult(IMigration.MigrationResult.Completed); return ValueTask.FromResult(IMigration.MigrationResult.Completed);
} }
private string MapPathV1(Guid id) => private string MapPathV1(Guid id) =>
Path.Join(_settings.DataDirectory, "files-v1", id.ToString()); Path.Join(_settings.DataDirectory, "files-v1", id.ToString());
private string MapPathV2(Guid id) => private string MapPathV2(Guid id) =>
Path.Join(_settings.DataDirectory, "files-v2", id.ToString()[..2], id.ToString()[2..4], id.ToString()); Path.Join(_settings.DataDirectory, "files-v2", id.ToString()[..2], id.ToString()[2..4], id.ToString());
} }