Skip to content

Commit 0387d63

Browse files
authored
Support IEnumerable overload for search after descriptor (#5417)
1 parent ffaa7bc commit 0387d63

File tree

2 files changed

+51
-3
lines changed

2 files changed

+51
-3
lines changed

src/Nest/Search/Search/SearchRequest.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,9 @@ public SearchDescriptor<TInferDocument> DocValueFields(Func<FieldsDescriptor<TIn
452452
public SearchDescriptor<TInferDocument> Sort(Func<SortDescriptor<TInferDocument>, IPromise<IList<ISort>>> selector) =>
453453
Assign(selector, (a, v) => a.Sort = v?.Invoke(new SortDescriptor<TInferDocument>())?.Value);
454454

455+
/// <inheritdoc cref="ISearchRequest.SearchAfter" />
456+
public SearchDescriptor<TInferDocument> SearchAfter(IEnumerable<object> searchAfter) => Assign(searchAfter, (a, v) => a.SearchAfter = v?.ToListOrNullIfEmpty());
457+
455458
/// <inheritdoc cref="ISearchRequest.SearchAfter" />
456459
public SearchDescriptor<TInferDocument> SearchAfter(IList<object> searchAfter) => Assign(searchAfter, (a, v) => a.SearchAfter = v);
457460

tests/Tests/Search/Request/SearchAfterUsageTests.cs

Lines changed: 48 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using System;
66
using System.Collections.Generic;
7+
using System.Linq;
78
using Nest;
89
using Tests.Core.ManagedElasticsearch.Clusters;
910
using Tests.Domain;
@@ -12,9 +13,9 @@
1213

1314
namespace Tests.Search.Request
1415
{
15-
public class SearchAfterUsageTests : SearchUsageTestBase
16+
public class SearchAfterParamsUsageTests : SearchUsageTestBase
1617
{
17-
public SearchAfterUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
18+
public SearchAfterParamsUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
1819

1920
protected override object ExpectJson =>
2021
new
@@ -43,7 +44,7 @@ public SearchAfterUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : bas
4344

4445

4546
protected override SearchRequest<Project> Initializer =>
46-
new SearchRequest<Project>
47+
new()
4748
{
4849
Sort = new List<ISort>
4950
{
@@ -57,4 +58,48 @@ public SearchAfterUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : bas
5758
}
5859
};
5960
}
61+
62+
public class SearchAfterUsageTests : SearchUsageTestBase
63+
{
64+
public SearchAfterUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cluster, usage) { }
65+
66+
private readonly IReadOnlyCollection<object> _previousSort = new List<object>
67+
{
68+
Project.First.NumberOfCommits,
69+
Project.First.Name
70+
};
71+
72+
protected override object ExpectJson =>
73+
new
74+
{
75+
sort = new object[]
76+
{
77+
new { numberOfCommits = new { order = "desc" } },
78+
new { name = new { order = "desc" } }
79+
},
80+
search_after = new object[]
81+
{
82+
Project.First.NumberOfCommits,
83+
Project.First.Name
84+
}
85+
};
86+
87+
protected override Func<SearchDescriptor<Project>, ISearchRequest> Fluent => s => s
88+
.Sort(srt => srt
89+
.Descending(p => p.NumberOfCommits)
90+
.Descending(p => p.Name)
91+
)
92+
.SearchAfter(_previousSort);
93+
94+
protected override SearchRequest<Project> Initializer =>
95+
new()
96+
{
97+
Sort = new List<ISort>
98+
{
99+
new FieldSort { Field = Field<Project>(p => p.NumberOfCommits), Order = SortOrder.Descending },
100+
new FieldSort { Field = Field<Project>(p => p.Name), Order = SortOrder.Descending }
101+
},
102+
SearchAfter = _previousSort.ToList()
103+
};
104+
}
60105
}

0 commit comments

Comments
 (0)