Skip to content
Snippets Groups Projects

Improve IssuableFinder performance

1 unresolved thread
4 files
+ 26
6
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -33,7 +33,6 @@ def execute
items = by_scope(items)
items = by_state(items)
items = by_group(items)
items = by_project(items)
items = by_search(items)
items = by_milestone(items)
items = by_assignee(items)
@@ -42,6 +41,9 @@ def execute
items = by_due_date(items)
items = by_non_archived(items)
items = by_iids(items)
# Filtering by project HAS TO be the last because we use the project IDs yielded by the issues query
items = by_project(items)
sort(items)
end
@@ -107,7 +109,7 @@ def project
@project = project
end
def projects
def projects(items = nil)
return @projects if defined?(@projects)
return @projects = project if project?
projects =
if current_user && params[:authorized_only].presence && !current_user_related?
@@ -117,2+119,2 @@
elsif group
GroupProjectsFinder.new(group).execute(current_user)
else
ProjectsFinder.new.execute(current_user)
ProjectsFinder.new.execute(current_user, item_project_ids(items))
end
@projects = projects.with_feature_available_for_user(klass, current_user).reorder(nil)
end
def search
@@ -257,3+259,3 @@
def by_project(items)
items =
if project?
items.of_projects(projects).references_project
elsif projects
items.merge(projects.reorder(nil)).join_project
items.of_projects(projects(items)).references_project
elsif projects(items)
items.merge(projects(items).reorder(nil)).join_project
else
items.none
end
@@ -396,4 +398,8 @@ def by_non_archived(items)
def current_user_related?
params[:scope] == 'created-by-me' || params[:scope] == 'authored' || params[:scope] == 'assigned-to-me'
end
def item_project_ids(items)
nil
end
end
Loading