Writing data to Microsoft Azure Storage Blob / Tables C#

 private async void StoreMetaData(MappingTargetClassData mtcd, string mappingName)
        {
       
            //Step 2 - Create new Json
            var appname = mtcd.ClassType.Assembly.GetName().Name;
            var header = new
            {
                appname,
                mtcd.MappingReportTemplate.SourceVersion,
                mtcd.MappingReportTemplate.TargetVersion,
                Mappings = mtcd.MappingReportTemplate
            };

            string jsonPeople = JsonConvert.SerializeObject(header);


String storageConnectionString = _config.GetValue<string>("metadata_connectionString");
CloudStorageAccount account = CloudStorageAccount.Parse(storageConnectionString); 

//Writing Storage Blob

CloudBlobClient serviceClient = account.CreateCloudBlobClient();
string fname = mappingName + '_' + mtcd.MappingReportTemplate.SourceVersion + '_' + mtcd.MappingReportTemplate.TargetVersion;
string filename = fname.Replace(".", "") + ".json";
Console.WriteLine("Creating container...");
var cloudBlobContainer = serviceClient.GetContainerReference("metadata");
cloudBlobContainer.CreateIfNotExistsAsync().Wait();

            // write a blob to the container
CloudBlockBlob blob = cloudBlobContainer.GetBlockBlobReference(filename);

bool blobExists = await cloudBlobContainer.GetBlockBlobReference(filename).ExistsAsync();
 if (!blobExists)
 {
 blob.UploadTextAsync(jsonPeople).Wait();
 }


//Writing Storage Tables


            CloudTableClient _tableClient = account.CreateCloudTableClient();

            CloudTable tableRef = _tableClient.GetTableReference("metadata");
            bool TableExists = await tableRef.CreateIfNotExistsAsync();

            string ver = "" + mtcd.MappingReportTemplate.SourceVersion + '_' + mtcd.MappingReportTemplate.TargetVersion;
            string versions = ver.Replace(".", "");
            MetaDataTable metaDataTable = new MetaDataTable(appname.ToString(), versions, jsonPeople);
            var query = new TableQuery<MetaDataTable>().Where(TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, appname.ToString()), TableOperators.And, TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.GreaterThanOrEqual, versions)));
            TableContinuationToken token = null;
            var results = await tableRef.ExecuteQuerySegmentedAsync(query, token);
            if (results.Count() == 0)
            {
            TableOperation insertOperation = TableOperation.Insert(metaDataTable);
            await tableRef.ExecuteAsync(insertOperation);
            }
        }



        public class MetaDataTable : TableEntity
        {
            public MetaDataTable() { }
            public MetaDataTable(string integration, string version, string json)
            {
                PartitionKey = integration; RowKey = version; JSON = json;
            }
            public string JSON { get; set; }
        }

Comments

Popular posts from this blog

LogicApps to Send Error Notification Based on configuration table.