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).
This commit is contained in:
Yorick Peterse 2016-03-04 11:39:00 +01:00 committed by Robert Speicher
parent b77b3b16b6
commit 9e00a23716
2 changed files with 10 additions and 4 deletions

View File

@ -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

View File

@ -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