Skip to content

Prefer custom sort order with search in users API

Stan Hu requested to merge sh-fix-custom-sort-with-search-users into master

What does this MR do and why?

In !135917 (merged) we fixed the users API to prioritize exact matches if the search parameter were provided. However, this broke clients that relied on using search with order_by and sort parameters, since the latter two parameters would be ignored in favor of ordering by id ASC.

To maintain the previous behavior, only rely on the custom sorting in User#search if order_by and sort are not provided. Unfortunately for optional parameters with defaults, Grape presets params to have these defaults, and it appears impossible to distinguish whether the user provided values, or whether the defaults were used. To deal with this, we define sort_params_no_defaults to drop the defaults and manually supply defaults when needed.

We may want to improve this later by passing along these parameters if they are compatible with keyset pagination.

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Stan Hu

Merge request reports