gitlab-org--gitlab-foss/app/finders
blackst0ne 53ea0f221e [Rails5] Fix snippets_finder arel queries
There is a bug https://github.com/rails/arel/issues/531 in Rails 5.0 and
5.1 in Arel/ActiveRecord.

This commit converts arel based queries to their raw counterparts to
make the finder work in Rails 5.0.

These changes should be reverted when on Rails 5.2 as since that version
such queries work well again. See the bug link.
2018-06-14 11:20:11 +11:00
..
admin [Rails5] Rename sort methods to sort_by_attribute 2018-04-04 09:19:47 +00:00
concerns Port read_cross_project ability from EE 2018-02-22 17:11:36 +01:00
access_requests_finder.rb Use Ability.allowed? instead of current_user.can? in AccessRequestsFinder 2016-09-28 08:46:59 +02:00
autocomplete_users_finder.rb Added changelog for user search improvements 2018-02-22 18:55:36 +01:00
branches_finder.rb Add overview of branches and a filter for active/stale branches 2018-03-06 21:28:14 +09:00
clusters_finder.rb Use attr_reader instead of instance variables 2017-11-28 14:39:18 +01:00
contributed_projects_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
environments_finder.rb Revert "Enable Style/DotPosition" 2017-02-23 09:33:19 -06:00
events_finder.rb Port read_cross_project ability from EE 2018-02-22 17:11:36 +01:00
fork_projects_finder.rb Introduce ForkProjectsFinder class 2017-09-20 08:27:16 +10:00
group_descendants_finder.rb Revert "Don't include projects shared as group-descendants" 2018-04-18 17:15:52 +02:00
group_finder.rb Merge branch 'jej-group-name-disclosure' into 'security' 2017-03-29 19:18:38 -07:00
group_members_finder.rb Backport of "Add assignee lists to boards" 2018-06-07 20:54:24 +00:00
group_projects_finder.rb Reduce queries in GroupProjectsFinder 2018-05-28 13:52:37 +02:00
groups_finder.rb show only groups an admin is a member of in dashboards/grops 2018-05-01 09:24:21 +00:00
issuable_finder.rb Force Postgres to avoid trigram indexes when in a group 2018-06-07 10:23:09 +01:00
issues_finder.rb Simplify issuable finder queries 2018-06-06 12:29:45 +01:00
joined_groups_finder.rb Address feedback 2016-03-22 00:09:20 +01:00
labels_finder.rb Allow assigning and filtering issuables by ancestor group labels 2018-04-04 15:40:29 +00:00
members_finder.rb Backport of "Add assignee lists to boards" 2018-06-07 20:54:24 +00:00
merge_request_target_project_finder.rb Prevent new merge requests for archived projects 2018-04-11 10:51:14 +02:00
merge_requests_finder.rb Simplify issuable finder queries 2018-06-06 12:29:45 +01:00
milestones_finder.rb Port read_cross_project ability from EE 2018-02-22 17:11:36 +01:00
move_to_project_finder.rb Removes default scope from sortable 2017-09-07 13:01:59 +01:00
notes_finder.rb Use limited count queries also for scoped searches 2018-03-05 13:25:56 +00:00
personal_access_tokens_finder.rb Adds Rubocop rule for line break after guard clause 2017-11-16 17:58:29 +01:00
personal_projects_finder.rb Order UsersController#projects.json by updated_at 2018-05-19 07:19:58 +09:00
pipeline_schedules_finder.rb Add Pipeline Schedules that supersedes experimental Trigger Schedule 2017-05-07 22:35:56 +00:00
pipelines_finder.rb Add sha filter to list pipelines 2018-04-27 11:00:52 +01:00
projects_finder.rb [Rails5] Rename sort methods to sort_by_attribute 2018-04-04 09:19:47 +00:00
README.md
runner_jobs_finder.rb Refactorize jobs finding logic 2017-11-28 00:36:50 +01:00
snippets_finder.rb [Rails5] Fix snippets_finder arel queries 2018-06-14 11:20:11 +11:00
tags_finder.rb add specs for tags finder 2016-08-31 19:16:47 +01:00
todos_finder.rb [Rails5] Rename sort methods to sort_by_attribute 2018-04-04 09:19:47 +00:00
union_finder.rb Tweaks, refactoring, and specs 2016-03-20 21:04:07 +01:00
user_recent_events_finder.rb Leverage user_contributed_projects to find recent events. 2018-03-07 14:36:25 +01:00
users_finder.rb Add 2FA filter to users API for admins only 2018-04-23 11:54:45 +03:00

Finders

This type of classes responsible for collection items based on different conditions. To prevent lookup methods in models like this:

class Project
  def issues_for_user_filtered_by(user, filter)
    # A lot of logic not related to project model itself
  end
end

issues = project.issues_for_user_filtered_by(user, params)

Better use this:

issues = IssuesFinder.new(project, user, filter).execute

It will help keep models thiner.