// read the document, modify it, call update method on modified document public static async void ModifyDatesDocument(UpdateDates update) { Console.WriteLine("modifying: update dates document"); Trace.TraceInformation("worker role:modifying: update dates document"); Database database = GetDatabase(DatabaseId).Result; DocumentCollection collection = GetCollection(database, CollectionId).Result; await UpdateDocument(collection, update); Console.WriteLine("new update date: " + update.lastUpdate.ToString() + " new updated to date: " + update.updatedTo.ToString()); Trace.TraceInformation("worker role: new update date: " + update.lastUpdate.ToString() + " new updated to date: " + update.updatedTo.ToString()); Console.WriteLine("update dates document modified"); }
// change the dates document public static void AlterUpdateDates() { UpdateDates update = new UpdateDates(); update.lastUpdate = dateTimeLastUpdated; update.updatedTo = dateTimeUpdatedTo; update.id = "update_dates"; if (update.updatedTo.Month == 12 && update.updatedTo.Day == 31) // if 31st december push to 1st january { update.updatedTo = update.updatedTo.AddDays(1); } DatabaseDates.ModifyDatesDocument(update); }
// create the update dates document public static async void CreateDatesDocument() { var queryDone = false; UpdateDates update = new UpdateDates(); update.id = "update_dates"; update.lastUpdate = DateTime.Now; update.updatedTo = DateTime.Now; while (!queryDone) { try { Console.WriteLine("creating document for the update dates document"); Database database = GetDatabase(DatabaseId).Result; DocumentCollection collection = GetCollection(database, CollectionId).Result; await client.CreateDocumentAsync(collection.SelfLink, update); Console.WriteLine("update dates document created"); queryDone = true; } catch (DocumentClientException documentClientException) { var statusCode = (int)documentClientException.StatusCode; if (statusCode == 429 || statusCode == 503) Thread.Sleep(documentClientException.RetryAfter); else throw; } catch (AggregateException aggregateException) { if (aggregateException.InnerException.GetType() == typeof(DocumentClientException)) { var docExcep = aggregateException.InnerException as DocumentClientException; var statusCode = (int)docExcep.StatusCode; if (statusCode == 429 || statusCode == 503) Thread.Sleep(docExcep.RetryAfter); else throw; } } } }
// update a modified document public static async Task<Document> UpdateDocument(DocumentCollection coll, UpdateDates record) { return await client.UpsertDocumentAsync(coll.SelfLink, record); }