Prefer custom sort order with search in users API
What does this MR do and why?
This backports !136538 (merged) to 16-6-stable-ee
.
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.
-
This MR is backporting a bug fix, documentation update, or spec fix, previously merged in the default branch. -
The MR that fixed the bug on the default branch has been deployed to GitLab.com (not applicable for documentation or spec changes). -
This MR has a severity label assigned (if applicable). -
This MR has been approved by a maintainer (only one approval is required). -
Ensure the e2e:package-and-test-ee
job has either succeeded or been approved by a Software Engineer in Test.
Note to the merge request author and maintainer
If you have questions about the patch release process, please:
- Refer to the patch release runbook for engineers and maintainers for guidance.
- Ask questions on the
#releases
Slack channel (internal only).