summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2016-03-04 11:39:00 +0100
committerRobert Speicher <rspeicher@gmail.com>2016-03-11 15:25:23 -0500
commit9e00a237161679b0d6afdefd246e0a7bf209510c (patch)
treee2dbc343dc5a64f275ff82edbf55178b0ff632c7
parentb77b3b16b6d34e19b07ec58bc9b1e1ca3b05ba25 (diff)
downloadgitlab-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.rb5
-rw-r--r--app/models/user.rb9
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