From 734bb4ff4fdc6f529b408acf70a90529172a2756 Mon Sep 17 00:00:00 2001 From: Florian Bernd Date: Tue, 11 Jul 2023 14:26:15 +0200 Subject: [PATCH] Community backports for 8.1.3 (#7793) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * DoubleWithFractionalPortionConverter and FloatWithFractionalPortionConverter should not fall through to always throw a JSONException for non NETCore builds (#7753) * Complted buckets JSON converter (#7738) * Boosted non-exhaustive enum deserialization (#7737) * Optimized `FieldConverter` (#7736) * Removed unused JsonIgnore (#7735) * Fixed the equality contract on Metrics type (#7733) * No allocations in ResponseItem IsValid prop (#7731) * Refactoring and tiny behavior fix for Ids (#7730) --------- Co-authored-by: Karl-Johan Sjögren Co-authored-by: Yoh Deadfall --- .../Api/ResponseItem.cs | 19 +++++-- .../Core/IEnumStruct.cs | 11 +++++ .../Core/Infer/Field/Field.cs | 1 - .../Core/Infer/Field/FieldConverter.cs | 41 +++++++--------- .../Core/Infer/Id/Ids.cs | 42 +--------------- .../Core/Infer/Id/IdsConverter.cs | 49 +++++++++++++++++++ .../Core/Infer/Metric/Metrics.cs | 16 ++++-- .../DoubleWithFractionalPortionConverter.cs | 1 + .../Serialization/EnumStructConverter.cs | 16 ++---- .../FloatWithFractionalPortionConverter.cs | 1 + .../Serialization/UnionConverter.cs | 33 ++++++++----- .../Types/Enums/Enums.Aggregations.g.cs | 1 + .../Types/Enums/Enums.Analysis.g.cs | 1 + .../_Generated/Types/Enums/Enums.Cluster.g.cs | 1 + .../Types/Enums/Enums.Core.Search.g.cs | 5 +- .../_Generated/Types/Enums/Enums.Enrich.g.cs | 1 + .../_Generated/Types/Enums/Enums.Eql.g.cs | 1 + .../Types/Enums/Enums.IndexManagement.g.cs | 5 +- .../_Generated/Types/Enums/Enums.Ingest.g.cs | 1 + .../_Generated/Types/Enums/Enums.Mapping.g.cs | 1 + .../_Generated/Types/Enums/Enums.Ml.g.cs | 1 + .../Types/Enums/Enums.NoNamespace.g.cs | 5 +- .../Types/Enums/Enums.QueryDsl.g.cs | 1 + .../_Generated/Types/Enums/Enums.Tasks.g.cs | 1 + .../_Generated/Types/Enums/Enums.Watcher.g.cs | 1 + 25 files changed, 156 insertions(+), 100 deletions(-) create mode 100644 src/Elastic.Clients.Elasticsearch/Core/IEnumStruct.cs create mode 100644 src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdsConverter.cs diff --git a/src/Elastic.Clients.Elasticsearch/Api/ResponseItem.cs b/src/Elastic.Clients.Elasticsearch/Api/ResponseItem.cs index cf6c182f8a4..f43dd53ef29 100644 --- a/src/Elastic.Clients.Elasticsearch/Api/ResponseItem.cs +++ b/src/Elastic.Clients.Elasticsearch/Api/ResponseItem.cs @@ -2,6 +2,8 @@ // Elasticsearch B.V licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. +using System; + namespace Elastic.Clients.Elasticsearch.Core.Bulk; public abstract partial class ResponseItem @@ -15,12 +17,19 @@ public bool IsValid if (Error is not null) return false; - return Operation.ToLowerInvariant() switch + var operation = Operation; + + if (operation.Equals("delete", StringComparison.OrdinalIgnoreCase)) + return Status is 200 or 404; + + if (operation.Equals("create", StringComparison.OrdinalIgnoreCase) || + operation.Equals("update", StringComparison.OrdinalIgnoreCase) || + operation.Equals("index", StringComparison.OrdinalIgnoreCase)) { - "delete" => Status == 200 || Status == 404, - "update" or "index" or "create" => Status == 200 || Status == 201, - _ => false, - }; + return Status is 200 or 201; + } + + return false; } } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/IEnumStruct.cs b/src/Elastic.Clients.Elasticsearch/Core/IEnumStruct.cs new file mode 100644 index 00000000000..0fc170344fe --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/Core/IEnumStruct.cs @@ -0,0 +1,11 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +namespace Elastic.Clients.Elasticsearch.Core; + +internal interface IEnumStruct where TSelf : struct, IEnumStruct +{ + // TODO: Can be made static when targeting .NET 7 and higher + TSelf Create(string value); +} diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/Field.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/Field.cs index 86e622fde8a..dbbf247862a 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/Field.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/Field.cs @@ -73,7 +73,6 @@ public Field(PropertyInfo property, double? boost = null, string format = null) /// public string? Format { get; set; } - [JsonIgnore] internal bool CachableExpression { get; } /// diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs index 131f00f8704..43cfededc56 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Field/FieldConverter.cs @@ -12,6 +12,9 @@ namespace Elastic.Clients.Elasticsearch; internal sealed class FieldConverter : JsonConverter { + private static readonly JsonEncodedText FieldProperty = JsonEncodedText.Encode("field"); + private static readonly JsonEncodedText FormatProperty = JsonEncodedText.Encode("format"); + private IElasticsearchClientSettings _settings; public override void WriteAsPropertyName(Utf8JsonWriter writer, Field value, JsonSerializerOptions options) @@ -48,19 +51,19 @@ private static Field ReadObjectField(ref Utf8JsonReader reader) { if (reader.TokenType == JsonTokenType.PropertyName) { - var propertyName = reader.GetString(); - reader.Read(); - - switch (propertyName) + if (reader.ValueTextEquals(FieldProperty.EncodedUtf8Bytes)) + { + reader.Read(); + field = reader.GetString(); + } + else if (reader.ValueTextEquals(FormatProperty.EncodedUtf8Bytes)) + { + reader.Read(); + format = reader.GetString(); + } + else { - case "field": - field = reader.GetString(); - break; - case "format": - format = reader.GetString(); - break; - default: - throw new JsonException("Unexpected property while reading `Field`."); + throw new JsonException($"Unexpected property while reading `{nameof(Field)}`."); } } } @@ -70,19 +73,13 @@ private static Field ReadObjectField(ref Utf8JsonReader reader) return new Field(field, format); } - throw new JsonException("Unable to read `Field` from JSON."); + throw new JsonException($"Unable to read `{nameof(Field)}` from JSON."); } public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOptions options) { InitializeSettings(options); - if (value is null) - { - writer.WriteNullValue(); - return; - } - var fieldName = _settings.Inferrer.Field(value); if (string.IsNullOrEmpty(value.Format)) @@ -92,10 +89,8 @@ public override void Write(Utf8JsonWriter writer, Field value, JsonSerializerOpt else { writer.WriteStartObject(); - writer.WritePropertyName("field"); - writer.WriteStringValue(fieldName); - writer.WritePropertyName("format"); - writer.WriteStringValue(value.Format); + writer.WriteString(FieldProperty, fieldName); + writer.WriteString(FormatProperty, value.Format); writer.WriteEndObject(); } } diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs index 05310377a8d..118d1119d96 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/Ids.cs @@ -6,7 +6,6 @@ using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using System.Text.Json; using System.Text.Json.Serialization; using Elastic.Transport; @@ -22,7 +21,7 @@ public partial class Ids : IUrlParameter, IEquatable public Ids(IList ids) => _ids = ids; - public Ids(IEnumerable ids) => _ids = ids?.Select(i => new Id(i)).ToList(); + public Ids(IEnumerable ids) => _ids = ids.Select(i => new Id(i)).ToList(); public Ids(string value) { @@ -84,42 +83,3 @@ public override int GetHashCode() public static bool operator !=(Ids left, Ids right) => !Equals(left, right); } - -internal sealed class IdsConverter : JsonConverter -{ - public override Ids? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - if (reader.TokenType != JsonTokenType.StartArray) - throw new JsonException($"Unexpected JSON token. Expected {JsonTokenType.StartArray} but read {reader.TokenType}"); - - var ids = new List(); - - while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) - { - var id = JsonSerializer.Deserialize(ref reader, options); - - if (id is not null) - ids.Add(id); - } - - return new Ids(ids); - } - - public override void Write(Utf8JsonWriter writer, Ids value, JsonSerializerOptions options) - { - if (value is null) - { - writer.WriteNullValue(); - return; - } - - writer.WriteStartArray(); - - foreach (var id in value.IdsToSerialize) - { - JsonSerializer.Serialize(writer, id, options); - } - - writer.WriteEndArray(); - } -} diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdsConverter.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdsConverter.cs new file mode 100644 index 00000000000..0fcada2b2fc --- /dev/null +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Id/IdsConverter.cs @@ -0,0 +1,49 @@ +// Licensed to Elasticsearch B.V under one or more agreements. +// Elasticsearch B.V licenses this file to you under the Apache 2.0 License. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace Elastic.Clients.Elasticsearch; + +internal sealed class IdsConverter : JsonConverter +{ + public override Ids? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + if (reader.TokenType != JsonTokenType.StartArray) + throw new JsonException($"Unexpected JSON token. Expected {JsonTokenType.StartArray} but read {reader.TokenType}"); + + var ids = new List(); + + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + var id = JsonSerializer.Deserialize(ref reader, options); + + if (id is not null) + ids.Add(id); + } + + return new Ids(ids); + } + + public override void Write(Utf8JsonWriter writer, Ids value, JsonSerializerOptions options) + { + if (value is null) + { + writer.WriteNullValue(); + return; + } + + writer.WriteStartArray(); + + foreach (var id in value.IdsToSerialize) + { + JsonSerializer.Serialize(writer, id, options); + } + + writer.WriteEndArray(); + } +} diff --git a/src/Elastic.Clients.Elasticsearch/Core/Infer/Metric/Metrics.cs b/src/Elastic.Clients.Elasticsearch/Core/Infer/Metric/Metrics.cs index 808bc73c7cd..68cc21015f3 100644 --- a/src/Elastic.Clients.Elasticsearch/Core/Infer/Metric/Metrics.cs +++ b/src/Elastic.Clients.Elasticsearch/Core/Infer/Metric/Metrics.cs @@ -4,7 +4,6 @@ using System; using System.Collections.Generic; -using System.Linq; using Elastic.Transport; namespace Elastic.Clients.Elasticsearch; @@ -53,8 +52,8 @@ public bool Equals(Metrics other) { if (other is null) return false; - // Equality is true when the metrics names in both instances are equal, regardless of their order in the set. - return Values.OrderBy(t => t).SequenceEqual(other.Values.OrderBy(t => t)); + // Equality is true when both instances have the same metric names. + return Values.SetEquals(other.Values); } string IUrlParameter.GetString(ITransportConfiguration settings) => GetString(); @@ -71,7 +70,16 @@ private string GetString() } /// - public override int GetHashCode() => Values != null ? Values.GetHashCode() : 0; + public override int GetHashCode() + { + // Lifting the minimal target framework to .NET Standard 2.1 + // would be the best solution ever due to the HashCode type. + var hashCode = 0; + foreach (var metric in Values) + hashCode = (hashCode * 397) ^ metric.GetHashCode(); + + return hashCode; + } public static bool operator ==(Metrics left, Metrics right) => Equals(left, right); public static bool operator !=(Metrics left, Metrics right) => !Equals(left, right); diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/DoubleWithFractionalPortionConverter.cs b/src/Elastic.Clients.Elasticsearch/Serialization/DoubleWithFractionalPortionConverter.cs index 6e716c69af7..27d6a622aa3 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/DoubleWithFractionalPortionConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/DoubleWithFractionalPortionConverter.cs @@ -75,6 +75,7 @@ public override void Write(Utf8JsonWriter writer, double value, JsonSerializerOp if (bytes.Length < utf8bytes.Length) { bytes.CopyTo(utf8bytes); + return; } } catch diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/EnumStructConverter.cs b/src/Elastic.Clients.Elasticsearch/Serialization/EnumStructConverter.cs index b7f8643de00..7bfb00d91dc 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/EnumStructConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/EnumStructConverter.cs @@ -3,24 +3,18 @@ // See the LICENSE file in the project root for more information. using System; -using System.Reflection; using System.Text.Json; using System.Text.Json.Serialization; +using Elastic.Clients.Elasticsearch.Core; namespace Elastic.Clients.Elasticsearch.Serialization; -internal sealed class EnumStructConverter : JsonConverter where T : new() +internal sealed class EnumStructConverter : JsonConverter where T : struct, IEnumStruct { - public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var value = reader.GetString(); - - var instance = (T)Activator.CreateInstance( - typeof(T), - BindingFlags.Instance | BindingFlags.NonPublic, - args: new object[] { value }, // TODO: Perf - Review use of ArrayPool - binder: null, - culture: null)!; + var instance = default(T).Create(value); return instance; } @@ -30,7 +24,7 @@ public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions var enumValue = value.ToString(); if (!string.IsNullOrEmpty(enumValue)) - writer.WriteStringValue(value.ToString()); + writer.WriteStringValue(enumValue); else writer.WriteNullValue(); } diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/FloatWithFractionalPortionConverter.cs b/src/Elastic.Clients.Elasticsearch/Serialization/FloatWithFractionalPortionConverter.cs index 9c6ca35e1d6..f9532091ae4 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/FloatWithFractionalPortionConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/FloatWithFractionalPortionConverter.cs @@ -75,6 +75,7 @@ public override void Write(Utf8JsonWriter writer, float value, JsonSerializerOpt if (bytes.Length < utf8bytes.Length) { bytes.CopyTo(utf8bytes); + return; } } catch diff --git a/src/Elastic.Clients.Elasticsearch/Serialization/UnionConverter.cs b/src/Elastic.Clients.Elasticsearch/Serialization/UnionConverter.cs index 20019610188..9908f3013fc 100644 --- a/src/Elastic.Clients.Elasticsearch/Serialization/UnionConverter.cs +++ b/src/Elastic.Clients.Elasticsearch/Serialization/UnionConverter.cs @@ -122,12 +122,6 @@ private class DerivedUnionConverterInner : JsonConverter< public override void Write(Utf8JsonWriter writer, TType value, JsonSerializerOptions options) { - if (value is null) - { - writer.WriteNullValue(); - return; - } - if (value.Item1 is not null) { JsonSerializer.Serialize(writer, value.Item1, value.Item1.GetType(), options); @@ -214,15 +208,30 @@ private class BucketsConverter : JsonConverter> { public override Buckets? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - // TODO - Read ahead to establish the type - For now, hardcoded for lists + return reader.TokenType switch + { + JsonTokenType.Null => null, + JsonTokenType.StartArray => new(JsonSerializer.Deserialize>(ref reader, options)), + JsonTokenType.StartObject => new(JsonSerializer.Deserialize>(ref reader, options)), + _ => throw new JsonException("Invalid bucket type") + }; + } - var bucketType = typeToConvert.GetGenericArguments()[0]; + public override void Write(Utf8JsonWriter writer, Buckets value, JsonSerializerOptions options) + { + if (value.Item1 is { } item1) + { + JsonSerializer.Serialize(writer, item1, options); + return; + } - var item = JsonSerializer.Deserialize(ref reader, typeof(IReadOnlyCollection), options); + if (value.Item2 is { } item2) + { + JsonSerializer.Serialize(writer, item2, options); + return; + } - return (Buckets)Activator.CreateInstance(typeof(Buckets<>).MakeGenericType(bucketType), item); + writer.WriteNullValue(); } - - public override void Write(Utf8JsonWriter writer, Buckets value, JsonSerializerOptions options) => throw new NotImplementedException(); } } diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs index 22eb8d0a1e2..c875fc18a4d 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Aggregations.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Aggregations; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Analysis.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Analysis.g.cs index 72dc4d36027..674718cb84b 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Analysis.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Analysis.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Analysis; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Cluster.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Cluster.g.cs index 1e1c6daee28..cf960255b31 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Cluster.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Cluster.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Cluster; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Core.Search.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Core.Search.g.cs index 2a38d6aa359..e07af1efd30 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Core.Search.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Core.Search.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Core.Search; @@ -225,10 +226,12 @@ public override void Write(Utf8JsonWriter writer, HighlighterTagsSchema value, J } [JsonConverter(typeof(EnumStructConverter))] -public readonly partial struct HighlighterType +public readonly partial struct HighlighterType : IEnumStruct { public HighlighterType(string value) => Value = value; + HighlighterType IEnumStruct.Create(string value) => value; + public readonly string Value { get; } public static HighlighterType Unified { get; } = new HighlighterType("unified"); public static HighlighterType Plain { get; } = new HighlighterType("plain"); diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Enrich.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Enrich.g.cs index 6ff924c6261..fb650c44091 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Enrich.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Enrich.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Enrich; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Eql.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Eql.g.cs index e6bbab0cf1b..a98d2cb204b 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Eql.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Eql.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Eql; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs index 2cc9f975547..2f6af988ff0 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.IndexManagement.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.IndexManagement; @@ -497,10 +498,12 @@ public override void Write(Utf8JsonWriter writer, ShardRoutingState value, JsonS } [JsonConverter(typeof(EnumStructConverter))] -public readonly partial struct StorageType +public readonly partial struct StorageType : IEnumStruct { public StorageType(string value) => Value = value; + StorageType IEnumStruct.Create(string value) => value; + public readonly string Value { get; } /// diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ingest.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ingest.g.cs index a0868fe9cbf..c52d9590dc8 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ingest.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ingest.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Ingest; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs index 4d0568d2b37..a2f680310ca 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Mapping.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Mapping; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ml.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ml.g.cs index 6c6ec49b1ad..cb41aa33204 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ml.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Ml.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Ml; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs index 73b5673c910..176ffac3c03 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch; @@ -997,10 +998,12 @@ public override void Write(Utf8JsonWriter writer, Result value, JsonSerializerOp } [JsonConverter(typeof(EnumStructConverter))] -public readonly partial struct ScriptLanguage +public readonly partial struct ScriptLanguage : IEnumStruct { public ScriptLanguage(string value) => Value = value; + ScriptLanguage IEnumStruct.Create(string value) => value; + public readonly string Value { get; } public static ScriptLanguage Painless { get; } = new ScriptLanguage("painless"); public static ScriptLanguage Mustache { get; } = new ScriptLanguage("mustache"); diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs index e8389a3fedf..4c8953c24d5 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.QueryDsl.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.QueryDsl; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Tasks.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Tasks.g.cs index 0f497b1f0c2..9f028290d39 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Tasks.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Tasks.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Tasks; diff --git a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Watcher.g.cs b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Watcher.g.cs index 70296f8bf2a..8e4ac760eba 100644 --- a/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Watcher.g.cs +++ b/src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.Watcher.g.cs @@ -22,6 +22,7 @@ using System.Text.Json.Serialization; using System.Runtime.Serialization; using Elastic.Transport; +using Elastic.Clients.Elasticsearch.Core; using Elastic.Clients.Elasticsearch.Serialization; namespace Elastic.Clients.Elasticsearch.Watcher;