public async IAsyncEnumerable <PartitionSnapshot> LoadSnapshotsAsync() { const string ignoreContainerName = "nosqlsnapshots"; await foreach (var container in _storageAccount.GetListOfContainersAsync()) { if (container.Name == ignoreContainerName) { continue; } await foreach (var blockBlob in container.GetListOfBlobsAsync()) { var memoryStream = new MemoryStream(); await blockBlob.DownloadToStreamAsync(memoryStream); var snapshot = new PartitionSnapshot { TableName = container.Name, PartitionKey = blockBlob.Name.Base64ToString(), Snapshot = memoryStream.ToArray() }; yield return(snapshot); Console.WriteLine("Loaded snapshot: " + snapshot); } } }
public async Task LoadSnapshotsAsync(Action <IEnumerable <string> > tablesCallback, Action <PartitionSnapshot> callbackPartitionSnapshot) { const string ignoreContainerName = "nosqlsnapshots"; var containers = await _storageAccount.GetListOfContainersAsync(); tablesCallback(containers.Select(itm => itm.Name).Where(name => name != ignoreContainerName)); foreach (var container in containers.Where(c => c.Name != ignoreContainerName)) { await foreach (var blockBlob in container.GetListOfBlobsAsync()) { var memoryStream = new MemoryStream(); await blockBlob.DownloadToStreamAsync(memoryStream); var snapshot = new PartitionSnapshot { TableName = container.Name, PartitionKey = blockBlob.Name.Base64ToString(), Snapshot = memoryStream.ToArray() }; callbackPartitionSnapshot(snapshot); Console.WriteLine("Loaded snapshot: " + snapshot); } } }
public async IAsyncEnumerable <ITableLoader> LoadTablesAsync() { await foreach (var container in _storageAccount.GetListOfContainersAsync()) { if (container.Name == SystemFileNames.SystemContainerName) { continue; } var tableMetadata = await TableMetadataSaver.GetTableMetadataAsync(container); var loader = new AzurePartitionsLoader(container, tableMetadata.Persist); yield return(loader); } }