Skip to content

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:

Edited by Thong Kuah

Merge request reports