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:
parent
b77b3b16b6
commit
9e00a23716
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue