/// <summary> /// Negates the result of key-filter operations. /// </summary> /// <param name="setup"> /// An <see cref="Action{T}"/> that accepts a <see cref="RiakFluentKeyFilter"/>, /// which the <see cref="Not"/> function will logically negate it's output. /// </param> /// <returns>A reference to this updated instance, for fluent chaining.</returns> /// <remarks> /// Configure the phase with a lambda similar to: /// <code>.Not(kf => kf.EndsWith("foo"))</code> /// The above filter will return all input keys that don't end in "foo". /// </remarks> public RiakFluentKeyFilter Not(Action <RiakFluentKeyFilter> setup) { var filters = new List <IRiakKeyFilterToken>(); var fluent = new RiakFluentKeyFilter(filters); setup(fluent); filters.Add(new Not(filters)); return(this); }
/// <summary> /// Joins two key-filter operations with a logical AND operation. /// </summary> /// <param name="left">The left <see cref="RiakFluentKeyFilter"/> operand to AND together.</param> /// <param name="right">The right <see cref="RiakFluentKeyFilter"/> operand to AND together.</param> /// <returns>A reference to this updated instance, for fluent chaining.</returns> public RiakFluentKeyFilter And(Action <RiakFluentKeyFilter> left, Action <RiakFluentKeyFilter> right) { var leftFilters = new List <IRiakKeyFilterToken>(); var leftFluent = new RiakFluentKeyFilter(leftFilters); left(leftFluent); var rightFilters = new List <IRiakKeyFilterToken>(); var rightFluent = new RiakFluentKeyFilter(rightFilters); right(rightFluent); filters.Add(new And(leftFilters, rightFilters)); return(this); }