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
{
private readonly VoidSettings _settings;
public FileStoreV2(VoidSettings settings)
{
_settings = settings;
}
public int Order => 2;
public ValueTask<IMigration.MigrationResult> 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());
}