Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormhasbini <mohammad.hasbini@gmail.com>2017-03-27 00:43:35 +0300
committermhasbini <mohammad.hasbini@gmail.com>2017-03-27 00:43:35 +0300
commit6e6da4bbcc1dd8f2255d154423bee3a0f63847bc (patch)
tree3a898036f466412fff50795fd64bfe15e13f524f /app/finders
parent37b5b7a5e6907c364800f6f58d37b6c0412255da (diff)
Optimize labels finder query
Optimize labels finder query when searching for a project with a group
Diffstat (limited to 'app/finders')
-rw-r--r--app/finders/labels_finder.rb13
1 files changed, 11 insertions, 2 deletions
diff --git a/app/finders/labels_finder.rb b/app/finders/labels_finder.rb
index fa0e2a5e3d8..e52083f86e4 100644
--- a/app/finders/labels_finder.rb
+++ b/app/finders/labels_finder.rb
@@ -20,8 +20,17 @@ class LabelsFinder < UnionFinder
if project?
if project
- label_ids << project.group.labels if project.group.present?
- label_ids << project.labels
+ if project.group.present?
+ labels_table = Label.arel_table
+
+ label_ids << Label.where(
+ labels_table[:type].eq('GroupLabel').and(labels_table[:group_id].eq(project.group.id)).or(
+ labels_table[:type].eq('ProjectLabel').and(labels_table[:project_id].eq(project.id))
+ )
+ )
+ else
+ label_ids << project.labels
+ end
end
else
label_ids << Label.where(group_id: projects.group_ids)