public async Task ExportAsync(ISyncService sync, SyncOptions options, ISession session) { var downloadPipeline = new DownloadPipeline(session, log, sync.FileSystem) { FilePathProvider = asset => asset.Id.GetBlobPath() }; try { var assets = new List <AssetModel>(); var assetBatch = 0; async Task SaveAsync() { var model = new AssetsModel { Assets = assets }; await log.DoSafeAsync($"Exporting Assets ({assetBatch})", async() => { await sync.WriteWithSchema(new FilePath("assets", $"{assetBatch}.json"), model, Ref); }); } await session.Assets.GetAllAsync(session.App, async asset => { var model = asset.ToModel(); model.FolderPath = await sync.Folders.GetPathAsync(asset.ParentId); assets.Add(model); if (assets.Count > 50) { await SaveAsync(); assets.Clear(); assetBatch++; } await downloadPipeline.DownloadAsync(asset); }); if (assets.Count > 0) { await SaveAsync(); } } finally { await downloadPipeline.CompleteAsync(); } }
public async Task ExportAsync(DirectoryInfo directoryInfo, JsonHelper jsonHelper, SyncOptions options, ISession session) { var downloadPipeline = new DownloadPipeline(session, log, directoryInfo); var assets = new List <AssetModel>(); var assetBatch = 0; async Task SaveAsync() { var model = new AssetsModel { Assets = assets }; await log.DoSafeAsync($"Exporting Assets ({assetBatch})", async() => { await jsonHelper.WriteWithSchema(directoryInfo, $"assets/{assetBatch}.json", model, Ref); }); } var tree = new FolderTree(session); await session.Assets.GetAllAsync(session.App, async asset => { assets.Add(await asset.ToModelAsync(tree)); if (assets.Count > 50) { await SaveAsync(); assets.Clear(); assetBatch++; } await downloadPipeline.DownloadAsync(asset); }); if (assets.Count > 0) { await SaveAsync(); } await downloadPipeline.CompleteAsync(); }
public async Task ExportAsync(ISyncService sync, SyncOptions options, ISession session) { var downloadPipeline = new DownloadPipeline(session, log, sync.FileSystem); var assets = new List <AssetModel>(); var assetBatch = 0; async Task SaveAsync() { var model = new AssetsModel { Assets = assets }; await log.DoSafeAsync($"Exporting Assets ({assetBatch})", async() => { await sync.WriteWithSchema(new FilePath("assets", $"{assetBatch}.json"), model, Ref); }); } var tree = new FolderTree(session); await session.Assets.GetAllAsync(session.App, async asset => { assets.Add(await asset.ToModelAsync(tree)); if (assets.Count > 50) { await SaveAsync(); assets.Clear(); assetBatch++; } await downloadPipeline.DownloadAsync(asset); }); if (assets.Count > 0) { await SaveAsync(); } await downloadPipeline.CompleteAsync(); }