Skip to content

Commit ca84b43

Browse files
stevejgordongithub-actions[bot]
authored andcommitted
Improve open enumeration code-gen (#6697)
1 parent f5e1661 commit ca84b43

File tree

8 files changed

+55
-34
lines changed

8 files changed

+55
-34
lines changed

src/Elastic.Clients.Elasticsearch/Serialization/StringAliasConverter.cs

+2-5
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,16 @@ public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions
3838
}
3939
}
4040

41-
42-
internal sealed class EnumStructConverter<T> : JsonConverter<T>
41+
internal sealed class EnumStructConverter<T> : JsonConverter<T> where T : new()
4342
{
44-
// TODO: Rename if not valid
45-
4643
public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
4744
{
4845
var value = reader.GetString();
4946

5047
var instance = (T)Activator.CreateInstance(
5148
typeof(T),
5249
BindingFlags.Instance | BindingFlags.NonPublic,
53-
args: new object[] { value },
50+
args: new object[] { value }, // TODO: Perf - Review use of ArrayPool
5451
binder: null,
5552
culture: null)!;
5653

src/Elastic.Clients.Elasticsearch/_Generated/Types/Enums/Enums.NoNamespace.g.cs

+33-9
Original file line numberDiff line numberDiff line change
@@ -801,11 +801,23 @@ public override void Write(Utf8JsonWriter writer, HighlighterTagsSchema value, J
801801
}
802802
}
803803

804-
public partial struct HighlighterType
804+
[JsonConverter(typeof(EnumStructConverter<HighlighterType>))]
805+
public readonly partial struct HighlighterType
805806
{
806-
public const string Unified = "unified";
807-
public const string Plain = "plain";
808-
public const string FastVector = "fvh";
807+
public HighlighterType(string value) => Value = value;
808+
public readonly string Value { get; }
809+
810+
public static HighlighterType Unified { get; } = new HighlighterType("unified");
811+
public static HighlighterType Plain { get; } = new HighlighterType("plain");
812+
public static HighlighterType FastVector { get; } = new HighlighterType("fvh");
813+
public override string ToString() => Value ?? string.Empty;
814+
public static implicit operator string(HighlighterType highlighterType) => highlighterType.Value;
815+
public static implicit operator HighlighterType(string value) => new(value);
816+
public override int GetHashCode() => Value.GetHashCode();
817+
public override bool Equals(object obj) => obj is HighlighterType other && this.Equals(other);
818+
public bool Equals(HighlighterType other) => Value == other.Value;
819+
public static bool operator ==(HighlighterType a, HighlighterType b) => a.Equals(b);
820+
public static bool operator !=(HighlighterType a, HighlighterType b) => !(a == b);
809821
}
810822

811823
[JsonConverter(typeof(IBDistributionConverter))]
@@ -1305,12 +1317,24 @@ public override void Write(Utf8JsonWriter writer, ScoreMode value, JsonSerialize
13051317
}
13061318
}
13071319

1308-
public partial struct ScriptLanguage
1320+
[JsonConverter(typeof(EnumStructConverter<ScriptLanguage>))]
1321+
public readonly partial struct ScriptLanguage
13091322
{
1310-
public const string Painless = "painless";
1311-
public const string Mustache = "mustache";
1312-
public const string Java = "java";
1313-
public const string Expression = "expression";
1323+
public ScriptLanguage(string value) => Value = value;
1324+
public readonly string Value { get; }
1325+
1326+
public static ScriptLanguage Painless { get; } = new ScriptLanguage("painless");
1327+
public static ScriptLanguage Mustache { get; } = new ScriptLanguage("mustache");
1328+
public static ScriptLanguage Java { get; } = new ScriptLanguage("java");
1329+
public static ScriptLanguage Expression { get; } = new ScriptLanguage("expression");
1330+
public override string ToString() => Value ?? string.Empty;
1331+
public static implicit operator string(ScriptLanguage scriptLanguage) => scriptLanguage.Value;
1332+
public static implicit operator ScriptLanguage(string value) => new(value);
1333+
public override int GetHashCode() => Value.GetHashCode();
1334+
public override bool Equals(object obj) => obj is ScriptLanguage other && this.Equals(other);
1335+
public bool Equals(ScriptLanguage other) => Value == other.Value;
1336+
public static bool operator ==(ScriptLanguage a, ScriptLanguage b) => a.Equals(b);
1337+
public static bool operator !=(ScriptLanguage a, ScriptLanguage b) => !(a == b);
13141338
}
13151339

13161340
[JsonConverter(typeof(ScriptSortTypeConverter))]

src/Elastic.Clients.Elasticsearch/_Generated/Types/Highlight.g.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public sealed partial class Highlight
116116

117117
[JsonInclude]
118118
[JsonPropertyName("type")]
119-
public string? Type { get; set; }
119+
public Elastic.Clients.Elasticsearch.HighlighterType? Type { get; set; }
120120
}
121121

122122
public sealed partial class HighlightDescriptor<TDocument> : SerializableDescriptorBase<HighlightDescriptor<TDocument>>
@@ -174,7 +174,7 @@ public HighlightDescriptor() : base()
174174

175175
private Elastic.Clients.Elasticsearch.HighlighterTagsSchema? TagsSchemaValue { get; set; }
176176

177-
private string? TypeValue { get; set; }
177+
private Elastic.Clients.Elasticsearch.HighlighterType? TypeValue { get; set; }
178178

179179
public HighlightDescriptor<TDocument> HighlightQuery(Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer? highlightQuery)
180180
{
@@ -326,7 +326,7 @@ public HighlightDescriptor<TDocument> TagsSchema(Elastic.Clients.Elasticsearch.H
326326
return Self;
327327
}
328328

329-
public HighlightDescriptor<TDocument> Type(string? type)
329+
public HighlightDescriptor<TDocument> Type(Elastic.Clients.Elasticsearch.HighlighterType? type)
330330
{
331331
TypeValue = type;
332332
return Self;
@@ -538,7 +538,7 @@ public HighlightDescriptor() : base()
538538

539539
private Elastic.Clients.Elasticsearch.HighlighterTagsSchema? TagsSchemaValue { get; set; }
540540

541-
private string? TypeValue { get; set; }
541+
private Elastic.Clients.Elasticsearch.HighlighterType? TypeValue { get; set; }
542542

543543
public HighlightDescriptor HighlightQuery(Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer? highlightQuery)
544544
{
@@ -690,7 +690,7 @@ public HighlightDescriptor TagsSchema(Elastic.Clients.Elasticsearch.HighlighterT
690690
return Self;
691691
}
692692

693-
public HighlightDescriptor Type(string? type)
693+
public HighlightDescriptor Type(Elastic.Clients.Elasticsearch.HighlighterType? type)
694694
{
695695
TypeValue = type;
696696
return Self;

src/Elastic.Clients.Elasticsearch/_Generated/Types/HighlightField.g.cs

+5-5
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ public sealed partial class HighlightField
116116

117117
[JsonInclude]
118118
[JsonPropertyName("type")]
119-
public string? Type { get; set; }
119+
public Elastic.Clients.Elasticsearch.HighlighterType? Type { get; set; }
120120
}
121121

122122
public sealed partial class HighlightFieldDescriptor<TDocument> : SerializableDescriptorBase<HighlightFieldDescriptor<TDocument>>
@@ -174,7 +174,7 @@ public HighlightFieldDescriptor() : base()
174174

175175
private Elastic.Clients.Elasticsearch.HighlighterTagsSchema? TagsSchemaValue { get; set; }
176176

177-
private string? TypeValue { get; set; }
177+
private Elastic.Clients.Elasticsearch.HighlighterType? TypeValue { get; set; }
178178

179179
public HighlightFieldDescriptor<TDocument> HighlightQuery(Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer? highlightQuery)
180180
{
@@ -332,7 +332,7 @@ public HighlightFieldDescriptor<TDocument> TagsSchema(Elastic.Clients.Elasticsea
332332
return Self;
333333
}
334334

335-
public HighlightFieldDescriptor<TDocument> Type(string? type)
335+
public HighlightFieldDescriptor<TDocument> Type(Elastic.Clients.Elasticsearch.HighlighterType? type)
336336
{
337337
TypeValue = type;
338338
return Self;
@@ -548,7 +548,7 @@ public HighlightFieldDescriptor() : base()
548548

549549
private Elastic.Clients.Elasticsearch.HighlighterTagsSchema? TagsSchemaValue { get; set; }
550550

551-
private string? TypeValue { get; set; }
551+
private Elastic.Clients.Elasticsearch.HighlighterType? TypeValue { get; set; }
552552

553553
public HighlightFieldDescriptor HighlightQuery(Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer? highlightQuery)
554554
{
@@ -712,7 +712,7 @@ public HighlightFieldDescriptor TagsSchema(Elastic.Clients.Elasticsearch.Highlig
712712
return Self;
713713
}
714714

715-
public HighlightFieldDescriptor Type(string? type)
715+
public HighlightFieldDescriptor Type(Elastic.Clients.Elasticsearch.HighlighterType? type)
716716
{
717717
TypeValue = type;
718718
return Self;

src/Elastic.Clients.Elasticsearch/_Generated/Types/InlineScript.g.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public sealed partial class InlineScript
2828
{
2929
[JsonInclude]
3030
[JsonPropertyName("lang")]
31-
public string? Language { get; set; }
31+
public Elastic.Clients.Elasticsearch.ScriptLanguage? Language { get; set; }
3232

3333
[JsonInclude]
3434
[JsonPropertyName("options")]
@@ -50,15 +50,15 @@ public InlineScriptDescriptor() : base()
5050
{
5151
}
5252

53-
private string? LanguageValue { get; set; }
53+
private Elastic.Clients.Elasticsearch.ScriptLanguage? LanguageValue { get; set; }
5454

5555
private Dictionary<string, string>? OptionsValue { get; set; }
5656

5757
private Dictionary<string, object>? ParamsValue { get; set; }
5858

5959
private string SourceValue { get; set; }
6060

61-
public InlineScriptDescriptor Language(string? language)
61+
public InlineScriptDescriptor Language(Elastic.Clients.Elasticsearch.ScriptLanguage? language)
6262
{
6363
LanguageValue = language;
6464
return Self;

src/Elastic.Clients.Elasticsearch/_Generated/Types/LanguageContext.g.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,6 @@ public sealed partial class LanguageContext
3232

3333
[JsonInclude]
3434
[JsonPropertyName("language")]
35-
public string Language { get; init; }
35+
public Elastic.Clients.Elasticsearch.ScriptLanguage Language { get; init; }
3636
}
3737
}

src/Elastic.Clients.Elasticsearch/_Generated/Types/Security/RoleTemplateInlineScript.g.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public sealed partial class RoleTemplateInlineScript
2828
{
2929
[JsonInclude]
3030
[JsonPropertyName("lang")]
31-
public string? Lang { get; set; }
31+
public Elastic.Clients.Elasticsearch.ScriptLanguage? Lang { get; set; }
3232

3333
[JsonInclude]
3434
[JsonPropertyName("options")]
@@ -50,15 +50,15 @@ public RoleTemplateInlineScriptDescriptor() : base()
5050
{
5151
}
5252

53-
private string? LangValue { get; set; }
53+
private Elastic.Clients.Elasticsearch.ScriptLanguage? LangValue { get; set; }
5454

5555
private Dictionary<string, string>? OptionsValue { get; set; }
5656

5757
private Dictionary<string, object>? ParamsValue { get; set; }
5858

5959
private Union<string, Elastic.Clients.Elasticsearch.QueryDsl.QueryContainer> SourceValue { get; set; }
6060

61-
public RoleTemplateInlineScriptDescriptor Lang(string? lang)
61+
public RoleTemplateInlineScriptDescriptor Lang(Elastic.Clients.Elasticsearch.ScriptLanguage? lang)
6262
{
6363
LangValue = lang;
6464
return Self;

src/Elastic.Clients.Elasticsearch/_Generated/Types/StoredScript.g.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public sealed partial class StoredScript
2828
{
2929
[JsonInclude]
3030
[JsonPropertyName("lang")]
31-
public string Language { get; set; }
31+
public Elastic.Clients.Elasticsearch.ScriptLanguage Language { get; set; }
3232

3333
[JsonInclude]
3434
[JsonPropertyName("options")]
@@ -46,13 +46,13 @@ public StoredScriptDescriptor() : base()
4646
{
4747
}
4848

49-
private string LanguageValue { get; set; }
49+
private Elastic.Clients.Elasticsearch.ScriptLanguage LanguageValue { get; set; }
5050

5151
private Dictionary<string, string>? OptionsValue { get; set; }
5252

5353
private string SourceValue { get; set; }
5454

55-
public StoredScriptDescriptor Language(string language)
55+
public StoredScriptDescriptor Language(Elastic.Clients.Elasticsearch.ScriptLanguage language)
5656
{
5757
LanguageValue = language;
5858
return Self;

0 commit comments

Comments
 (0)