Skip to content

[Backport 8.3] Containers support fluent variant assignment #6766

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 14, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -114,31 +114,29 @@ public InferenceConfigContainerDescriptor() : base()

private Descriptor Descriptor { get; set; }

private void Set<T>(Action<T> descriptorAction, string variantName)
private InferenceConfigContainerDescriptor<TDocument> Set<T>(Action<T> descriptorAction, string variantName)
where T : Descriptor
{
if (ContainsVariant)
throw new InvalidOperationException("A variant has already been assigned to the InferenceConfigContainerDescriptor. Only a single InferenceConfigContainer variant can be added to this container type.");
ContainedVariantName = variantName;
ContainsVariant = true;
var descriptor = (T)Activator.CreateInstance(typeof(T), true);
descriptorAction?.Invoke(descriptor);
Descriptor = descriptor;
return Self;
}

private void Set(object variant, string variantName)
private InferenceConfigContainerDescriptor<TDocument> Set(object variant, string variantName)
{
if (ContainsVariant)
throw new Exception("A variant has already been assigned to the InferenceConfigContainerDescriptor. Only a single InferenceConfigContainer variant can be added to this container type.");
Variant = variant;
ContainedVariantName = variantName;
ContainsVariant = true;
return Self;
}

public void Classification(Ml.ClassificationInferenceOptions variant) => Set(variant, "classification");
public void Classification(Action<Ml.ClassificationInferenceOptionsDescriptor> configure) => Set(configure, "classification");
public void Regression(Ml.RegressionInferenceOptions variant) => Set(variant, "regression");
public void Regression(Action<Ml.RegressionInferenceOptionsDescriptor<TDocument>> configure) => Set(configure, "regression");
public InferenceConfigContainerDescriptor<TDocument> Classification(Ml.ClassificationInferenceOptions variant) => Set(variant, "classification");
public InferenceConfigContainerDescriptor<TDocument> Classification(Action<Ml.ClassificationInferenceOptionsDescriptor> configure) => Set(configure, "classification");
public InferenceConfigContainerDescriptor<TDocument> Regression(Ml.RegressionInferenceOptions variant) => Set(variant, "regression");
public InferenceConfigContainerDescriptor<TDocument> Regression(Action<Ml.RegressionInferenceOptionsDescriptor<TDocument>> configure) => Set(configure, "regression");
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
Expand Down Expand Up @@ -177,32 +175,30 @@ public InferenceConfigContainerDescriptor() : base()

private Descriptor Descriptor { get; set; }

private void Set<T>(Action<T> descriptorAction, string variantName)
private InferenceConfigContainerDescriptor Set<T>(Action<T> descriptorAction, string variantName)
where T : Descriptor
{
if (ContainsVariant)
throw new InvalidOperationException("A variant has already been assigned to the InferenceConfigContainerDescriptor. Only a single InferenceConfigContainer variant can be added to this container type.");
ContainedVariantName = variantName;
ContainsVariant = true;
var descriptor = (T)Activator.CreateInstance(typeof(T), true);
descriptorAction?.Invoke(descriptor);
Descriptor = descriptor;
return Self;
}

private void Set(object variant, string variantName)
private InferenceConfigContainerDescriptor Set(object variant, string variantName)
{
if (ContainsVariant)
throw new Exception("A variant has already been assigned to the InferenceConfigContainerDescriptor. Only a single InferenceConfigContainer variant can be added to this container type.");
Variant = variant;
ContainedVariantName = variantName;
ContainsVariant = true;
return Self;
}

public void Classification(Ml.ClassificationInferenceOptions variant) => Set(variant, "classification");
public void Classification(Action<Ml.ClassificationInferenceOptionsDescriptor> configure) => Set(configure, "classification");
public void Regression(Ml.RegressionInferenceOptions variant) => Set(variant, "regression");
public void Regression(Action<Ml.RegressionInferenceOptionsDescriptor> configure) => Set(configure, "regression");
public void Regression<TDocument>(Action<Ml.RegressionInferenceOptionsDescriptor<TDocument>> configure) => Set(configure, "regression");
public InferenceConfigContainerDescriptor Classification(Ml.ClassificationInferenceOptions variant) => Set(variant, "classification");
public InferenceConfigContainerDescriptor Classification(Action<Ml.ClassificationInferenceOptionsDescriptor> configure) => Set(configure, "classification");
public InferenceConfigContainerDescriptor Regression(Ml.RegressionInferenceOptions variant) => Set(variant, "regression");
public InferenceConfigContainerDescriptor Regression(Action<Ml.RegressionInferenceOptionsDescriptor> configure) => Set(configure, "regression");
public InferenceConfigContainerDescriptor Regression<TDocument>(Action<Ml.RegressionInferenceOptionsDescriptor<TDocument>> configure) => Set(configure, "regression");
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -191,25 +191,23 @@ public FieldSuggesterDescriptor() : base()

private Descriptor Descriptor { get; set; }

private void Set<T>(Action<T> descriptorAction, string variantName)
private FieldSuggesterDescriptor<TDocument> Set<T>(Action<T> descriptorAction, string variantName)
where T : Descriptor
{
if (ContainsVariant)
throw new InvalidOperationException("A variant has already been assigned to the FieldSuggesterDescriptor. Only a single FieldSuggester variant can be added to this container type.");
ContainedVariantName = variantName;
ContainsVariant = true;
var descriptor = (T)Activator.CreateInstance(typeof(T), true);
descriptorAction?.Invoke(descriptor);
Descriptor = descriptor;
return Self;
}

private void Set(object variant, string variantName)
private FieldSuggesterDescriptor<TDocument> Set(object variant, string variantName)
{
if (ContainsVariant)
throw new Exception("A variant has already been assigned to the FieldSuggesterDescriptor. Only a single FieldSuggester variant can be added to this container type.");
Variant = variant;
ContainedVariantName = variantName;
ContainsVariant = true;
return Self;
}

private string? PrefixValue { get; set; }
Expand All @@ -236,12 +234,12 @@ public FieldSuggesterDescriptor<TDocument> Text(string? text)
return Self;
}

public void Completion(CompletionSuggester variant) => Set(variant, "completion");
public void Completion(Action<CompletionSuggesterDescriptor<TDocument>> configure) => Set(configure, "completion");
public void Phrase(PhraseSuggester variant) => Set(variant, "phrase");
public void Phrase(Action<PhraseSuggesterDescriptor<TDocument>> configure) => Set(configure, "phrase");
public void Term(TermSuggester variant) => Set(variant, "term");
public void Term(Action<TermSuggesterDescriptor<TDocument>> configure) => Set(configure, "term");
public FieldSuggesterDescriptor<TDocument> Completion(CompletionSuggester variant) => Set(variant, "completion");
public FieldSuggesterDescriptor<TDocument> Completion(Action<CompletionSuggesterDescriptor<TDocument>> configure) => Set(configure, "completion");
public FieldSuggesterDescriptor<TDocument> Phrase(PhraseSuggester variant) => Set(variant, "phrase");
public FieldSuggesterDescriptor<TDocument> Phrase(Action<PhraseSuggesterDescriptor<TDocument>> configure) => Set(configure, "phrase");
public FieldSuggesterDescriptor<TDocument> Term(TermSuggester variant) => Set(variant, "term");
public FieldSuggesterDescriptor<TDocument> Term(Action<TermSuggesterDescriptor<TDocument>> configure) => Set(configure, "term");
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
Expand Down Expand Up @@ -298,25 +296,23 @@ public FieldSuggesterDescriptor() : base()

private Descriptor Descriptor { get; set; }

private void Set<T>(Action<T> descriptorAction, string variantName)
private FieldSuggesterDescriptor Set<T>(Action<T> descriptorAction, string variantName)
where T : Descriptor
{
if (ContainsVariant)
throw new InvalidOperationException("A variant has already been assigned to the FieldSuggesterDescriptor. Only a single FieldSuggester variant can be added to this container type.");
ContainedVariantName = variantName;
ContainsVariant = true;
var descriptor = (T)Activator.CreateInstance(typeof(T), true);
descriptorAction?.Invoke(descriptor);
Descriptor = descriptor;
return Self;
}

private void Set(object variant, string variantName)
private FieldSuggesterDescriptor Set(object variant, string variantName)
{
if (ContainsVariant)
throw new Exception("A variant has already been assigned to the FieldSuggesterDescriptor. Only a single FieldSuggester variant can be added to this container type.");
Variant = variant;
ContainedVariantName = variantName;
ContainsVariant = true;
return Self;
}

private string? PrefixValue { get; set; }
Expand All @@ -343,15 +339,15 @@ public FieldSuggesterDescriptor Text(string? text)
return Self;
}

public void Completion(CompletionSuggester variant) => Set(variant, "completion");
public void Completion(Action<CompletionSuggesterDescriptor> configure) => Set(configure, "completion");
public void Completion<TDocument>(Action<CompletionSuggesterDescriptor<TDocument>> configure) => Set(configure, "completion");
public void Phrase(PhraseSuggester variant) => Set(variant, "phrase");
public void Phrase(Action<PhraseSuggesterDescriptor> configure) => Set(configure, "phrase");
public void Phrase<TDocument>(Action<PhraseSuggesterDescriptor<TDocument>> configure) => Set(configure, "phrase");
public void Term(TermSuggester variant) => Set(variant, "term");
public void Term(Action<TermSuggesterDescriptor> configure) => Set(configure, "term");
public void Term<TDocument>(Action<TermSuggesterDescriptor<TDocument>> configure) => Set(configure, "term");
public FieldSuggesterDescriptor Completion(CompletionSuggester variant) => Set(variant, "completion");
public FieldSuggesterDescriptor Completion(Action<CompletionSuggesterDescriptor> configure) => Set(configure, "completion");
public FieldSuggesterDescriptor Completion<TDocument>(Action<CompletionSuggesterDescriptor<TDocument>> configure) => Set(configure, "completion");
public FieldSuggesterDescriptor Phrase(PhraseSuggester variant) => Set(variant, "phrase");
public FieldSuggesterDescriptor Phrase(Action<PhraseSuggesterDescriptor> configure) => Set(configure, "phrase");
public FieldSuggesterDescriptor Phrase<TDocument>(Action<PhraseSuggesterDescriptor<TDocument>> configure) => Set(configure, "phrase");
public FieldSuggesterDescriptor Term(TermSuggester variant) => Set(variant, "term");
public FieldSuggesterDescriptor Term(Action<TermSuggesterDescriptor> configure) => Set(configure, "term");
public FieldSuggesterDescriptor Term<TDocument>(Action<TermSuggesterDescriptor<TDocument>> configure) => Set(configure, "term");
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -125,33 +125,31 @@ public SmoothingModelContainerDescriptor() : base()

private Descriptor Descriptor { get; set; }

private void Set<T>(Action<T> descriptorAction, string variantName)
private SmoothingModelContainerDescriptor<TDocument> Set<T>(Action<T> descriptorAction, string variantName)
where T : Descriptor
{
if (ContainsVariant)
throw new InvalidOperationException("A variant has already been assigned to the SmoothingModelContainerDescriptor. Only a single SmoothingModelContainer variant can be added to this container type.");
ContainedVariantName = variantName;
ContainsVariant = true;
var descriptor = (T)Activator.CreateInstance(typeof(T), true);
descriptorAction?.Invoke(descriptor);
Descriptor = descriptor;
return Self;
}

private void Set(object variant, string variantName)
private SmoothingModelContainerDescriptor<TDocument> Set(object variant, string variantName)
{
if (ContainsVariant)
throw new Exception("A variant has already been assigned to the SmoothingModelContainerDescriptor. Only a single SmoothingModelContainer variant can be added to this container type.");
Variant = variant;
ContainedVariantName = variantName;
ContainsVariant = true;
return Self;
}

public void Laplace(LaplaceSmoothingModel variant) => Set(variant, "laplace");
public void Laplace(Action<LaplaceSmoothingModelDescriptor> configure) => Set(configure, "laplace");
public void LinearInterpolation(LinearInterpolationSmoothingModel variant) => Set(variant, "linear_interpolation");
public void LinearInterpolation(Action<LinearInterpolationSmoothingModelDescriptor> configure) => Set(configure, "linear_interpolation");
public void StupidBackoff(StupidBackoffSmoothingModel variant) => Set(variant, "stupid_backoff");
public void StupidBackoff(Action<StupidBackoffSmoothingModelDescriptor> configure) => Set(configure, "stupid_backoff");
public SmoothingModelContainerDescriptor<TDocument> Laplace(LaplaceSmoothingModel variant) => Set(variant, "laplace");
public SmoothingModelContainerDescriptor<TDocument> Laplace(Action<LaplaceSmoothingModelDescriptor> configure) => Set(configure, "laplace");
public SmoothingModelContainerDescriptor<TDocument> LinearInterpolation(LinearInterpolationSmoothingModel variant) => Set(variant, "linear_interpolation");
public SmoothingModelContainerDescriptor<TDocument> LinearInterpolation(Action<LinearInterpolationSmoothingModelDescriptor> configure) => Set(configure, "linear_interpolation");
public SmoothingModelContainerDescriptor<TDocument> StupidBackoff(StupidBackoffSmoothingModel variant) => Set(variant, "stupid_backoff");
public SmoothingModelContainerDescriptor<TDocument> StupidBackoff(Action<StupidBackoffSmoothingModelDescriptor> configure) => Set(configure, "stupid_backoff");
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
Expand Down Expand Up @@ -190,33 +188,31 @@ public SmoothingModelContainerDescriptor() : base()

private Descriptor Descriptor { get; set; }

private void Set<T>(Action<T> descriptorAction, string variantName)
private SmoothingModelContainerDescriptor Set<T>(Action<T> descriptorAction, string variantName)
where T : Descriptor
{
if (ContainsVariant)
throw new InvalidOperationException("A variant has already been assigned to the SmoothingModelContainerDescriptor. Only a single SmoothingModelContainer variant can be added to this container type.");
ContainedVariantName = variantName;
ContainsVariant = true;
var descriptor = (T)Activator.CreateInstance(typeof(T), true);
descriptorAction?.Invoke(descriptor);
Descriptor = descriptor;
return Self;
}

private void Set(object variant, string variantName)
private SmoothingModelContainerDescriptor Set(object variant, string variantName)
{
if (ContainsVariant)
throw new Exception("A variant has already been assigned to the SmoothingModelContainerDescriptor. Only a single SmoothingModelContainer variant can be added to this container type.");
Variant = variant;
ContainedVariantName = variantName;
ContainsVariant = true;
return Self;
}

public void Laplace(LaplaceSmoothingModel variant) => Set(variant, "laplace");
public void Laplace(Action<LaplaceSmoothingModelDescriptor> configure) => Set(configure, "laplace");
public void LinearInterpolation(LinearInterpolationSmoothingModel variant) => Set(variant, "linear_interpolation");
public void LinearInterpolation(Action<LinearInterpolationSmoothingModelDescriptor> configure) => Set(configure, "linear_interpolation");
public void StupidBackoff(StupidBackoffSmoothingModel variant) => Set(variant, "stupid_backoff");
public void StupidBackoff(Action<StupidBackoffSmoothingModelDescriptor> configure) => Set(configure, "stupid_backoff");
public SmoothingModelContainerDescriptor Laplace(LaplaceSmoothingModel variant) => Set(variant, "laplace");
public SmoothingModelContainerDescriptor Laplace(Action<LaplaceSmoothingModelDescriptor> configure) => Set(configure, "laplace");
public SmoothingModelContainerDescriptor LinearInterpolation(LinearInterpolationSmoothingModel variant) => Set(variant, "linear_interpolation");
public SmoothingModelContainerDescriptor LinearInterpolation(Action<LinearInterpolationSmoothingModelDescriptor> configure) => Set(configure, "linear_interpolation");
public SmoothingModelContainerDescriptor StupidBackoff(StupidBackoffSmoothingModel variant) => Set(variant, "stupid_backoff");
public SmoothingModelContainerDescriptor StupidBackoff(Action<StupidBackoffSmoothingModelDescriptor> configure) => Set(configure, "stupid_backoff");
protected override void Serialize(Utf8JsonWriter writer, JsonSerializerOptions options, IElasticsearchClientSettings settings)
{
if (!ContainsVariant)
Expand Down
Loading