diff options
author | Yorick Peterse <yorickpeterse@gmail.com> | 2016-03-04 11:39:00 +0100 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2016-03-11 15:25:23 -0500 |
commit | 9e00a237161679b0d6afdefd246e0a7bf209510c (patch) | |
tree | e2dbc343dc5a64f275ff82edbf55178b0ff632c7 | |
parent | b77b3b16b6d34e19b07ec58bc9b1e1ca3b05ba25 (diff) | |
download | gitlab-ce-9e00a237161679b0d6afdefd246e0a7bf209510c.tar.gz |
Clean up ProjectsFinder for getting user projects
We don't need the extra layer of nesting of UNION queries here (as
User#authorized_projects already returns a UNION'd query).
-rw-r--r-- | app/finders/projects_finder.rb | 5 | ||||
-rw-r--r-- | app/models/user.rb | 9 |
2 files changed, 10 insertions, 4 deletions
diff --git a/app/finders/projects_finder.rb b/app/finders/projects_finder.rb index 3b4e0362e04..2b8fba77bb1 100644 --- a/app/finders/projects_finder.rb +++ b/app/finders/projects_finder.rb @@ -52,7 +52,10 @@ class ProjectsFinder def all_projects(current_user) if current_user - [current_user.authorized_projects, public_and_internal_projects] + [ + *current_user.project_relations, + public_and_internal_projects + ] else [Project.public_only] end diff --git a/app/models/user.rb b/app/models/user.rb index fc4cf92be60..725f748faf0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -442,6 +442,11 @@ class User < ActiveRecord::Base Project.where("projects.id IN (#{projects_union.to_sql})") end + # Returns all the project relations + def project_relations + [personal_projects, groups_projects, projects] + end + def owned_projects @owned_projects ||= Project.where('namespace_id IN (?) OR namespace_id = ?', @@ -830,9 +835,7 @@ class User < ActiveRecord::Base private def projects_union - Gitlab::SQL::Union.new([personal_projects.select(:id), - groups_projects.select(:id), - projects.select(:id)]) + Gitlab::SQL::Union.new(project_relations.map { |r| r.select(:id) }) end def ci_projects_union |