private async Task <bool> CreateResourceIfNotExists(string databaseName, Hl7.Fhir.Model.Resource r) { try { if (r == null) { return(false); } string fh = historystore.InsertResourceHistoryItem(r); if (fh == null) { Trace.TraceError("Failed to update resource history...Upsert aborted for {0}-{1}", Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType), r.Id); return(false); } //Overflow remove attachments or error if (fh.Length > 500000) { } JObject obj = JObject.Parse(fh); var inserted = await this.client.UpsertDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType)), obj); return(true); } catch (DocumentClientException de) { Trace.TraceError("Error creating resource: {0}-{1}-{2} Message: {3}", databaseName, Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType), r.Id, de.Message); historystore.DeleteResourceHistoryItem(r); Trace.TraceInformation("Resource history entry for {0}-{1} version {2} rolledback due to document creation error.", Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType), r.Id, r.Meta.VersionId); return(false); } }
private async Task <int> CreateResourceIfNotExists(string databaseName, Hl7.Fhir.Model.Resource r) { int retstatus = -1; //Error try { if (r == null) { return(retstatus); } string fh = historystore.InsertResourceHistoryItem(r); if (fh == null) { Trace.TraceError("Failed to update resource history...Upsert aborted for {0}-{1}", Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType), r.Id); return(retstatus); } JObject obj = JObject.Parse(fh); //Overflow remove attachments flagged to pull from history if (fh.Length > imaxdocsize) { string rt = Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType); obj = FhirAttachments.Instance.RemoveAttachementData(rt, obj); } var inserted = await this.client.UpsertDocumentAsync(UriFactory.CreateDocumentCollectionUri(databaseName, Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType)), obj); retstatus = (inserted.StatusCode == HttpStatusCode.Created ? 1 : 0); return(retstatus); } catch (DocumentClientException de) { //Trace.TraceError("Error creating resource: {0}-{1}-{2} Message: {3}", databaseName,Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType),r.ResourceType),r.Id,de.Message); historystore.DeleteResourceHistoryItem(r); //Trace.TraceInformation("Resource history entry for {0}-{1} version {2} rolledback due to document creation error.", Enum.GetName(typeof(Hl7.Fhir.Model.ResourceType), r.ResourceType), r.Id, r.Meta.VersionId); return(retstatus); } }