public PatchRequest CreatePatchRequest <TDocument>(PropertyUpdateDescriptor[] propertyUpdates, Expression <Func <TDocument, bool> > condition) { var parameters = new ScriptParameterDictionary(); var patchRequest = new PatchRequest { Values = parameters, Script = _patchScriptBuilder.CreateConditionalPatchScript(propertyUpdates, condition, parameters) }; return(patchRequest); }
private static void Main(string[] args) { var dummyChangeId1 = 1000; var dummyChangeId2 = 2000; var arr = new[] { 100, 200, 300 }; PrintCondition(doc => doc.LastKnownChangeId > 10); PrintCondition(doc => doc.LastKnownChangeId == 0 ? true : doc.LastKnownChangeId > dummyChangeId1); PrintCondition(doc => doc.LastKnownChangeId == 0 ? true : doc.LastKnownChangeId > dummyChangeId1 + 1); PrintCondition(doc => doc.LastKnownChangeId == 0 ? true : doc.LastKnownChangeId > arr[arr.Length - 1] + 1); PrintCondition(doc => doc.LastKnownChangeId == 0 ? true : (dummyChangeId1 < dummyChangeId2 ? true : false)); PrintCondition(doc => doc.LastKnownChangeId > DateTime.UtcNow.Year); PrintCondition(doc => string.IsNullOrWhiteSpace(doc.Id) ? true : (doc.LastKnownChangeId < dummyChangeId1 ? true : false)); PrintCondition(doc => doc.LastKnownChangeId.ToString() != ""); PrintCondition(doc => doc.Id.Length > 0); PrintCondition(doc => doc.RecordedChangeIds.Length > 0); PrintCondition(doc => doc.ReferenceIds.Count > 0); PrintCondition(doc => doc.InvolvedUsers.Count > 0); PrintCondition(doc => doc.Dictionary.Count > 0); PrintCondition(doc => doc.Dictionary.Keys.Count > 0); PrintCondition(doc => doc.Dictionary.Values.Count > 0); PrintCondition(doc => doc.InvolvedUsers.Any()); PrintCondition(doc => doc.InvolvedUsers.Any(u => u == string.Empty)); PrintCondition(doc => doc.Dictionary.Any()); PrintCondition(doc => doc.Dictionary.Any(pair => pair.Value == string.Empty || pair.Key == "ThisIsIt")); var script = patchScriptBuilder.CreateConditionalPatchScript( new PropertyUpdateBatch <TestDocument>() .Add(doc => doc.LastKnownChangeId, dummyChangeId2) .Add(doc => doc.RecordedChangeIds, new[] { 1L, 2L, 3L }) .CreateBatch(), (TestDocument doc) => doc.LastKnownChangeId < dummyChangeId2, new ScriptParameterDictionary()); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }