Skip to content
Snippets Groups Projects

Improve performance of the global search for issuables

All threads resolved!
Compare and Show latest version
3 files
+ 20
10
Compare changes
  • Side-by-side
  • Inline
Files
3
@@ -184,7 +184,6 @@ def project
@project = project
end
# rubocop: disable CodeReuse/ActiveRecord
def projects
return @projects if defined?(@projects)
@@ -194,17 +193,26 @@ def projects
if current_user && params[:authorized_only].presence && !current_user_related?
current_user.authorized_projects(min_access_level)
elsif group
GroupProjectsFinder.new(group: group, current_user: current_user, options: group_finder_options, params: min_access_level_param).execute # rubocop: disable CodeReuse/Finder
find_group_projects
else
ProjectsFinder.new(current_user: current_user, params: min_access_level_param).execute # rubocop: disable CodeReuse/Finder
find_projects
end
@projects = projects.with_feature_available_for_user(klass, current_user).reorder(nil)
@projects = projects.with_feature_available_for_user(klass, current_user).reorder(nil) # rubocop: disable CodeReuse/ActiveRecord
end
def find_group_projects
return Project.none unless group
GroupProjectsFinder.new(group: group, # rubocop: disable CodeReuse/Finder
current_user: current_user,
options: { include_subgroups: params[:include_subgroups], only_owned: true },
params: { min_access_level: min_access_level }).execute
end
# rubocop: enable CodeReuse/ActiveRecord
def group_finder_options
{ include_subgroups: params[:include_subgroups], only_owned: true }
def find_projects
ProjectsFinder.new(current_user: current_user, # rubocop: disable CodeReuse/Finder
params: { public_or_min_access_level: min_access_level }).execute
end
def min_access_level_param
Loading