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; }
}
{
//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
Post a Comment