public async Task DowngradeAsync(RepositoryOptions options, CancellationToken cancel = default) { var path = Path.Combine(options.Folder, "pins"); var folder = new DirectoryInfo(path); if (!folder.Exists) { return; } var store = new FileStore <Cid, Pin1> { Folder = path, NameToKey = (cid) => cid.Hash.ToBase32(), KeyToName = (key) => new MultiHash(Base32.FromBase32(key)) }; var files = folder.EnumerateFiles().Where(fi => fi.Length != 0); foreach (var fi in files) { try { var name = store.KeyToName(fi.Name); var pin = await store.GetAsync(name, cancel).ConfigureAwait(false); File.Create(Path.Combine(store.Folder, pin.Id)); File.Delete(store.GetPath(name)); } catch { // ignored } } }