Prefer custom sort order with search in users API
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.
-
I have evaluated the MR acceptance checklist for this MR.