@@ -129,41 +129,46 @@ public Task IndexAsync(Package package, CancellationToken cancellationToken = de
129
129
results . Last ( ) . Add ( result ) ;
130
130
}
131
131
}
132
- while ( token != null && results . Count <= take + skip ) ;
132
+ while ( token != null && results . Count < take + skip ) ;
133
133
134
- return results . Skip ( skip ) . ToList ( ) ;
134
+ return results . Skip ( skip ) . Take ( take ) . ToList ( ) ;
135
135
}
136
136
137
137
private string GenerateSearchFilter ( string searchText , bool includePrerelease , bool includeSemVer2 )
138
138
{
139
- // Filter to rows where the "searchText" prefix matches on the partition key.
140
- var prefix = searchText ? . TrimEnd ( ) . Split ( separator : null ) . Last ( ) ?? string . Empty ;
139
+ var result = "" ;
141
140
142
- var prefixLower = prefix ;
143
- var prefixUpper = prefix + "~" ;
141
+ if ( ! string . IsNullOrWhiteSpace ( searchText ) )
142
+ {
143
+ // Filter to rows where the "searchText" prefix matches on the partition key.
144
+ var prefix = searchText ? . TrimEnd ( ) . Split ( separator : null ) . Last ( ) ?? string . Empty ;
145
+
146
+ var prefixLower = prefix ;
147
+ var prefixUpper = prefix + "~" ;
144
148
145
- var partitionLowerFilter = TableQuery . GenerateFilterCondition (
146
- "PartitionKey" ,
147
- QueryComparisons . GreaterThanOrEqual ,
148
- prefixLower ) ;
149
+ var partitionLowerFilter = TableQuery . GenerateFilterCondition (
150
+ "PartitionKey" ,
151
+ QueryComparisons . GreaterThanOrEqual ,
152
+ prefixLower ) ;
149
153
150
- var partitionUpperFilter = TableQuery . GenerateFilterCondition (
151
- "PartitionKey" ,
152
- QueryComparisons . LessThanOrEqual ,
153
- prefixUpper ) ;
154
+ var partitionUpperFilter = TableQuery . GenerateFilterCondition (
155
+ "PartitionKey" ,
156
+ QueryComparisons . LessThanOrEqual ,
157
+ prefixUpper ) ;
154
158
155
- var partitionFilter = GenerateAnd ( partitionLowerFilter , partitionUpperFilter ) ;
159
+ result = GenerateAnd ( partitionLowerFilter , partitionUpperFilter ) ;
160
+ }
156
161
157
162
// Filter to rows that are listed.
158
- var result = GenerateAnd (
159
- partitionFilter ,
163
+ result = GenerateAnd (
164
+ result ,
160
165
GenerateIsTrue ( nameof ( TablePackageService . PackageEntity . Listed ) ) ) ;
161
166
162
167
if ( ! includePrerelease )
163
168
{
164
169
result = GenerateAnd (
165
170
result ,
166
- GenerateIsTrue ( nameof ( TablePackageService . PackageEntity . IsPrerelease ) ) ) ;
171
+ GenerateIsFalse ( nameof ( TablePackageService . PackageEntity . IsPrerelease ) ) ) ;
167
172
}
168
173
169
174
if ( ! includeSemVer2 )
@@ -180,6 +185,8 @@ private string GenerateSearchFilter(string searchText, bool includePrerelease, b
180
185
181
186
string GenerateAnd ( string left , string right )
182
187
{
188
+ if ( string . IsNullOrEmpty ( left ) ) return right ;
189
+
183
190
return TableQuery . CombineFilters ( left , TableOperators . And , right ) ;
184
191
}
185
192
@@ -190,6 +197,14 @@ string GenerateIsTrue(string propertyName)
190
197
QueryComparisons . Equal ,
191
198
givenValue : true ) ;
192
199
}
200
+
201
+ string GenerateIsFalse ( string propertyName )
202
+ {
203
+ return TableQuery . GenerateFilterConditionForBool (
204
+ propertyName ,
205
+ QueryComparisons . Equal ,
206
+ givenValue : false ) ;
207
+ }
193
208
}
194
209
195
210
private string ToAutocompleteResult ( IReadOnlyList < TablePackageService . PackageEntity > packages )
0 commit comments