public static async System.Threading.Tasks.Task RunAsync( [QueueTrigger("podcast-to-be-added-to-weekly-activity", Connection = "AzureWebJobsStorage")] PodCast podCast, Binder binder, ILogger log) { var week = Week.FromDate(podCast.Created); var blobName = $"activity-weekly/{week.Year.ToString("0000")}/{week.WeekNumber.ToString("00")}.json"; log.LogInformation($"To save to {blobName}"); var attributes = new Attribute[] { new BlobAttribute(blobName), new StorageAccountAttribute("AzureWebJobsStorage") }; var blob = await binder.BindAsync <CloudBlockBlob>(attributes); using (var locker = new CloudBlockBlobLocker <Models.WeekActivity>(blob)) { var activity = locker.IsNew ? new Models.WeekActivity(week.Year, week.WeekNumber) : await locker.Download(); activity.AddPodCast(podCast); await locker.Upload(activity); } }
public async Task Update(Action <Models.WeekActivity> action) { var blobName = $"activity-weekly/{_week.Year.ToString("0000")}/{_week.WeekNumber.ToString("00")}.json"; _log.LogInformation($"To save to {blobName}"); var attributes = new Attribute[] { new BlobAttribute(blobName), new StorageAccountAttribute("AzureWebJobsStorage") }; var blob = await _binder.BindAsync <CloudBlockBlob>(attributes); using (var locker = new CloudBlockBlobLocker <Models.WeekActivity>(blob)) { var activity = locker.IsNew ? new Models.WeekActivity(_week.Year, _week.WeekNumber) : await locker.Download(); action(activity); await locker.Upload(activity); } }
public async static Task Run([ActivityTrigger] IDurableActivityContext context, Binder binder, ILogger log) { var activityToSave = context.GetInput <Models.WeekActivity>(); var blobName = $"activity-weekly/{activityToSave.Year.ToString("0000")}/{activityToSave.WeekNumber.ToString("00")}.json"; log.LogInformation($"Preparing to update ${blobName}"); var attributes = new Attribute[] { new BlobAttribute(blobName), new StorageAccountAttribute("AzureWebJobsStorage") }; var blob = await binder.BindAsync <CloudBlockBlob>(attributes); log.LogInformation("Locking blob"); using (var locker = new CloudBlockBlobLocker <Models.WeekActivity>(blob)) { if (locker.IsNew) { log.LogInformation("Uploading new blob"); await locker.Upload(activityToSave); } else { var mergedActivity = await locker.Download(); if (activityToSave.Blogs != null) { mergedActivity.Blogs = activityToSave.Blogs; } if (activityToSave.Clients != null) { mergedActivity.Clients = activityToSave.Clients; } if (activityToSave.Focus != null) { mergedActivity.Focus = activityToSave.Focus; } if (activityToSave.Pluralsight != null) { mergedActivity.Pluralsight = activityToSave.Pluralsight; } if (activityToSave.PodCasts != null) { mergedActivity.PodCasts = activityToSave.PodCasts; } if (activityToSave.Skills != null) { mergedActivity.Skills = activityToSave.Skills; } log.LogInformation("Uploading merged blob"); await locker.Upload(mergedActivity); } } }