@@ -141,18 +141,65 @@ public async Task<IEnumerable<string>> GetReviewFirstLevelPropertiesAsync(string
141
141
{
142
142
var searchAsQueryStr = ArrayToQueryString < string > ( search ) ;
143
143
var searchAsSingleString = '"' + String . Join ( ' ' , search ) + '"' ;
144
- queryStringBuilder . Append ( $ " AND (r.Author IN { searchAsQueryStr } ") ;
145
- queryStringBuilder . Append ( $ " OR STRINGEQUALS(r.Revisions[0].Name, { searchAsSingleString } , true)") ;
146
- queryStringBuilder . Append ( $ " OR CONTAINS(r.Name, { searchAsSingleString } , true)") ;
147
- queryStringBuilder . Append ( $ " OR CONTAINS(r.ServiceName, { searchAsSingleString } , true)") ;
148
- queryStringBuilder . Append ( $ " OR CONTAINS(r.PackageDisplayName, { searchAsSingleString } , true)") ;
149
- queryStringBuilder . Append ( $ " OR (CONTAINS(r.Name, \" { search [ 0 ] } \" , true)") ;
150
-
151
- for ( int i = 1 ; i < search . Count ; i ++ )
144
+
145
+ var hasExactMatchQuery = search . Any (
146
+ s => (
147
+ s . StartsWith ( "package:" ) ||
148
+ s . StartsWith ( "pr:" ) ||
149
+ s . StartsWith ( "author:" ) ||
150
+ s . StartsWith ( "service:" ) ||
151
+ s . StartsWith ( "name:" )
152
+ ) ) ;
153
+
154
+ if ( hasExactMatchQuery )
155
+ {
156
+ foreach ( var item in search )
157
+ {
158
+ if ( item . StartsWith ( "package:" ) )
159
+ {
160
+ var query = '"' + $ "{ item . Replace ( "package:" , "" ) } " + '"' ;
161
+ queryStringBuilder . Append ( $ " AND STRINGEQUALS(ARRAY_SLICE(r.Revisions, -1)[0].Files[0].PackageName, { query } , true)") ;
162
+ }
163
+ else if ( item . StartsWith ( "author:" ) )
164
+ {
165
+ var query = '"' + $ "{ item . Replace ( "author:" , "" ) } " + '"' ;
166
+ queryStringBuilder . Append ( $ " AND STRINGEQUALS(r.Author, { query } , true)") ;
167
+ }
168
+ else if ( item . StartsWith ( "service:" ) )
169
+ {
170
+ var query = '"' + $ "{ item . Replace ( "service:" , "" ) } " + '"' ;
171
+ queryStringBuilder . Append ( $ " AND STRINGEQUALS(r.ServiceName, { query } , true)") ;
172
+ }
173
+ else if ( item . StartsWith ( "pr:" ) )
174
+ {
175
+ var query = '"' + $ "{ item . Replace ( "pr:" , "" ) } " + '"' ;
176
+ queryStringBuilder . Append ( $ " AND ENDSWITH(ARRAY_SLICE(r.Revisions, -1)[0].Label, { query } , true)") ;
177
+ }
178
+ else if ( item . StartsWith ( "name:" ) )
179
+ {
180
+ var query = '"' + $ "{ item . Replace ( "name:" , "" ) } " + '"' ;
181
+ queryStringBuilder . Append ( $ " AND CONTAINS(ARRAY_SLICE(r.Revisions, -1)[0].Name, { query } , true)") ;
182
+ }
183
+ else
184
+ {
185
+ var query = '"' + $ "{ item } " + '"' ;
186
+ queryStringBuilder . Append ( $ " AND CONTAINS(ARRAY_SLICE(r.Revisions, -1)[0].Name, { query } , true)") ;
187
+ }
188
+ }
189
+ }
190
+ else
152
191
{
153
- queryStringBuilder . Append ( $ " AND CONTAINS(r.Revisions[0].Name, \" { search [ i ] } \" , true)") ;
192
+ queryStringBuilder . Append ( $ " AND (r.Author IN { searchAsQueryStr } ") ;
193
+ foreach ( var item in search )
194
+ {
195
+ var query = '"' + $ "{ item } " + '"' ;
196
+ queryStringBuilder . Append ( $ " OR CONTAINS(ARRAY_SLICE(r.Revisions, -1)[0].Name, { query } , true)") ;
197
+ queryStringBuilder . Append ( $ " OR CONTAINS(r.Name, { query } , true)") ;
198
+ queryStringBuilder . Append ( $ " OR CONTAINS(r.ServiceName, { query } , true)") ;
199
+ queryStringBuilder . Append ( $ " OR CONTAINS(r.PackageDisplayName, { query } , true)") ;
200
+ }
201
+ queryStringBuilder . Append ( $ ")") ;
154
202
}
155
- queryStringBuilder . Append ( $ "))") ;
156
203
}
157
204
158
205
if ( languages != null && languages . Count > 0 )
0 commit comments