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(); }
public async Task GenerateSchemaAsync(ISyncService sync) { await sync.WriteJsonSchemaAsync <AssetsModel>(new FilePath("assets.json")); var sample = new AssetsModel { Assets = new List <AssetModel> { new AssetModel { Id = Guid.NewGuid().ToString(), FileName = "my.file.txt", FileHash = "<Optional Hash>", MimeType = "plain/text" } } }; await sync.WriteWithSchema(new FilePath("assets", "__asset.json"), sample, Ref); }
public async Task GenerateSchemaAsync(DirectoryInfo directoryInfo, JsonHelper jsonHelper) { await jsonHelper.WriteJsonSchemaAsync <AssetsModel>(directoryInfo, "assets.json"); var sample = new AssetsModel { Assets = new List <AssetModel> { new AssetModel { Id = Guid.NewGuid().ToString(), FileName = "my.file.txt", FileHash = "<Optional Hash>", MimeType = "plain/text" } } }; await jsonHelper.WriteWithSchema(directoryInfo, "assets/__asset.json", sample, Ref); }