@@ -237,39 +237,24 @@ func (s *WindowsDesktopService) ListWindowsDesktops(ctx context.Context, req typ
237
237
filter .PredicateExpression = expression
238
238
}
239
239
240
- // do a point-read instead of a range-read if a filter is provided
241
- if req .HostID != "" && req .Name != "" {
242
- desktop , err := s .getWindowsDesktop (ctx , req .Name , req .HostID )
243
- if trace .IsNotFound (err ) {
244
- return & types.ListWindowsDesktopsResponse {}, nil
245
- } else if err != nil {
246
- return nil , trace .Wrap (err )
247
- }
248
-
249
- match , err := services .MatchResourceByFilters (desktop , filter , nil /* ignore dup matches */ )
250
- if err != nil {
251
- return nil , trace .Wrap (err )
252
- }
253
-
254
- if ! match {
255
- return & types.ListWindowsDesktopsResponse {}, nil
256
- }
257
-
258
- return & types.ListWindowsDesktopsResponse {
259
- Desktops : []types.WindowsDesktop {desktop },
260
- }, nil
240
+ var rangeStart , rangeEnd backend.Key
241
+ switch {
242
+ case req .Name != "" && req .HostID != "" :
243
+ rangeStart = backend .NewKey (windowsDesktopsPrefix , req .HostID , req .Name )
244
+ rangeEnd = rangeStart
245
+ case req .HostID != "" :
246
+ rangeStart = backend .ExactKey (windowsDesktopsPrefix , req .HostID )
247
+ rangeEnd = backend .RangeEnd (rangeStart )
248
+ default :
249
+ rangeStart = backend .ExactKey (windowsDesktopsPrefix )
250
+ rangeEnd = backend .RangeEnd (rangeStart )
261
251
}
262
252
263
- var rangeStart , rangeEnd backend.Key
264
- if req .HostID != "" && req .Name == "" {
265
- rangeStart = backend .NewKey (windowsDesktopsPrefix , req .HostID )
266
- if req .StartKey != "" {
267
- rangeStart = backend .NewKey (windowsDesktopsPrefix , req .StartKey )
253
+ if req .StartKey != "" {
254
+ k := backend .NewKey (windowsDesktopsPrefix , req .StartKey )
255
+ if k .Compare (rangeStart ) > 0 {
256
+ rangeStart = k
268
257
}
269
- rangeEnd = backend .RangeEnd (rangeStart )
270
- } else {
271
- rangeStart = backend .NewKey (windowsDesktopsPrefix , req .StartKey )
272
- rangeEnd = backend .RangeEnd (backend .ExactKey (windowsDesktopsPrefix ))
273
258
}
274
259
275
260
// Get most limit+1 results to determine if there will be a next key.
0 commit comments