Skip to content

Commit 690f0ff

Browse files
authored
Fix/source enabled (elastic#3015)
* SourceEnabled() used to take string[] which adheres to the spec but since we also have SourceInclude/Exclude it makes more sense for this parameter to be a bool in the client * Generated request parameters value types should be nullable to reflect their absence on the querystring * generated request parameters on descriptors that take a value type should also be nullable * reran code generation after rebase
1 parent 1ce3183 commit 690f0ff

File tree

7 files changed

+2590
-2575
lines changed

7 files changed

+2590
-2575
lines changed

src/CodeGeneration/ApiGenerator/Domain/ApiEndpoint.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,8 @@ private void PatchRequestParameters(IEndpointOverrides overrides)
325325
if (globalOverrides.RenderPartial.Contains(newName))
326326
kv.Value.RenderPartial = true;
327327

328+
//make sure source_enabled takes a boolean only
329+
if (newName == "source_enabled") kv.Value.Type = "boolean";
328330

329331
patchedParams.Add(newName, kv.Value);
330332
}

src/CodeGeneration/ApiGenerator/Domain/ApiQueryParameters.cs

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,6 @@ public class ApiQueryParameters
1313
public string Obsolete { get; set; }
1414
public IEnumerable<string> Options { get; set; }
1515

16-
17-
1816
public string CsharpType(string paramName)
1917
{
2018
switch (this.Type)
@@ -56,6 +54,9 @@ public IEnumerable<string> HighLevelTypeDescription(string paramName)
5654
yield return "<para>For requests that are constructed from/for a document NEST will automatically infer the routing key";
5755
yield return "if that document has a <see cref=\"Nest.JoinField\" /> or a routing mapping on for its type exists on <see cref=\"Nest.ConnectionSettings\" /></para> ";
5856
yield break;
57+
case "source_enabled":
58+
yield return "Whether the _source should be included in the response.";
59+
yield break;
5960
default:
6061
yield return this.Description;
6162
yield break;
@@ -80,13 +81,25 @@ public string HighLevelType(string paramName)
8081
case "string" when isFields: return "Fields";
8182
case "string" when o.Contains("field"): return "Field";
8283
default:
83-
return csharpType;
84+
return NullableCsharpType(csharpType);
85+
}
86+
}
87+
private static string NullableCsharpType(string fieldType)
88+
{
89+
switch (fieldType)
90+
{
91+
case "bool": return "bool?";
92+
case "integer": return "int?";
93+
case "double": return "double?";
94+
case "long": return "long?";
95+
default:
96+
return fieldType;
8497
}
8598
}
8699

87100
public Func<string, string, string, string, string> Generator { get; set; } =
88101
(fieldType, mm, original, setter) =>
89-
$"public {fieldType} {mm} {{ get {{ return Q<{fieldType}>(\"{original}\"); }} set {{ Q(\"{original}\", {setter}); }} }}";
102+
$"public {NullableCsharpType(fieldType)} {mm} {{ get {{ return Q<{NullableCsharpType(fieldType)}>(\"{original}\"); }} set {{ Q(\"{original}\", {setter}); }} }}";
90103

91104
public Func<string, string, string, string, string> FluentGenerator { get; set; }
92105

src/CodeGeneration/ApiGenerator/Views/_Descriptors.Generated.cshtml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ namespace Nest
5454
}
5555
var t = @kv.Value.HighLevelType(kv.Key);
5656
var tMethod = t == "Time" ? ".ToTimeSpan()" : "";
57-
var tSuffix = (t == "bool") ? " = true" : "";
57+
var tSuffix = (t == "bool" || t == "bool?") ? " = true" : "";
5858
var m = kv.Key.ToPascalCase();
5959
var mm = (m != "Type" && m != "Index" && m != "Source" && m != "Script") ? m : m + "QueryString";
6060
var typed = !method.DescriptorTypeGeneric.IsNullOrEmpty();

src/Elasticsearch.Net/Domain/RequestParameters/RequestParameters.Generated.cs

Lines changed: 808 additions & 808 deletions
Large diffs are not rendered by default.

src/Nest/_Generated/_Descriptors.generated.cs

Lines changed: 818 additions & 818 deletions
Large diffs are not rendered by default.

src/Nest/_Generated/_Requests.generated.cs

Lines changed: 941 additions & 941 deletions
Large diffs are not rendered by default.

src/Tests/Search/Explain/ExplainApiTests.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ protected override LazyResponses ClientUsage() => Calls(
3232

3333
protected override ExplainDescriptor<Project> NewDescriptor() => new ExplainDescriptor<Project>(_project);
3434

35-
private Project _project = new Project { Name = Project.Instance.Name };
35+
private readonly Project _project = new Project { Name = Project.Instance.Name };
3636

3737
protected override object ExpectJson => new
3838
{
@@ -49,7 +49,7 @@ protected override LazyResponses ClientUsage() => Calls(
4949
};
5050

5151
protected override Func<ExplainDescriptor<Project>, IExplainRequest<Project>> Fluent => e => e
52-
.SourceEnabled("true") //TODO this should be generated as a bool
52+
.SourceEnabled()
5353
.Query(q => q
5454
.Match(m => m
5555
.Field(p => p.Name)
@@ -59,7 +59,7 @@ protected override LazyResponses ClientUsage() => Calls(
5959

6060
protected override ExplainRequest<Project> Initializer => new ExplainRequest<Project>(_project)
6161
{
62-
SourceEnabled = new [] { "true" },
62+
SourceEnabled = true,
6363
Query = new QueryContainer(new MatchQuery
6464
{
6565
Field = "name",

0 commit comments

Comments
 (0)