Skip to content

Commit

Permalink
Support allow_duplicates on append processor
Browse files Browse the repository at this point in the history
  • Loading branch information
stevejgordon committed Dec 22, 2020
1 parent f78d25d commit f3b4c62
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 10 deletions.
8 changes: 8 additions & 0 deletions src/Nest/Ingest/Processors/AppendProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,17 @@ public interface IAppendProcessor : IProcessor

[DataMember(Name ="value")]
IEnumerable<object> Value { get; set; }

[DataMember(Name = "allow_duplicates")]
bool? AllowDuplicates { get; set; }
}

public class AppendProcessor : ProcessorBase, IAppendProcessor
{
public Field Field { get; set; }
public IEnumerable<object> Value { get; set; }
public bool? AllowDuplicates { get; set; }

protected override string Name => "append";
}

Expand All @@ -35,6 +40,7 @@ public class AppendProcessorDescriptor<T> : ProcessorDescriptorBase<AppendProces
protected override string Name => "append";
Field IAppendProcessor.Field { get; set; }
IEnumerable<object> IAppendProcessor.Value { get; set; }
bool? IAppendProcessor.AllowDuplicates { get; set; }

public AppendProcessorDescriptor<T> Field(Field field) => Assign(field, (a, v) => a.Field = v);

Expand All @@ -49,5 +55,7 @@ public AppendProcessorDescriptor<T> Value<TValue>(params TValue[] values) => Ass
a.Value = (v.First() as IEnumerable)?.Cast<object>();
else a.Value = v?.Cast<object>();
});

public AppendProcessorDescriptor<T> AllowDuplicates(bool allowDuplicates = true) => Assign(allowDuplicates, (a, v) => a.AllowDuplicates = v);
}
}
43 changes: 33 additions & 10 deletions tests/Tests/Ingest/ProcessorAssertions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
using Elastic.Elasticsearch.Xunit.XunitPlumbing;
using Nest;
using Tests.Core.Client;
using Tests.Core.Extensions;
using Tests.Core.Xunit;
using Tests.Domain;

Expand Down Expand Up @@ -59,19 +60,41 @@ public static IPromise<IList<IProcessor>> Fluent(ProcessorsDescriptor d)

public class Append : ProcessorAssertion
{
public override Func<ProcessorsDescriptor, IPromise<IList<IProcessor>>> Fluent => d => d
.Append<Project>(a => a
.Field(p => p.State)
.Value(StateOfBeing.Stable, StateOfBeing.VeryActive)
);
public override Func<ProcessorsDescriptor, IPromise<IList<IProcessor>>> Fluent =>
d => d.Append<Project>(a =>
{
var apd = a.Field(p => p.State).Value(StateOfBeing.Stable, StateOfBeing.VeryActive);

public override IProcessor Initializer => new AppendProcessor
if (TestClient.Configuration.InRange(">=7.11.0"))
apd.AllowDuplicates(false);

return apd;
});

public override IProcessor Initializer
{
Field = "state",
Value = new object[] { StateOfBeing.Stable, StateOfBeing.VeryActive }
};
get
{
var ap = new AppendProcessor { Field = "state", Value = new object[] { StateOfBeing.Stable, StateOfBeing.VeryActive } };

if (TestClient.Configuration.InRange(">=7.11.0"))
ap.AllowDuplicates = false;

return ap;
}
}

public override object Json
{
get
{
if (TestClient.Configuration.InRange(">=7.11.0"))
return new { field = "state", value = new[] { "Stable", "VeryActive" }, allow_duplicates = false };

return new { field = "state", value = new[] { "Stable", "VeryActive" } };
}
}

public override object Json => new { field = "state", value = new[] { "Stable", "VeryActive" } };
public override string Key => "append";
}

Expand Down

0 comments on commit f3b4c62

Please sign in to comment.