diff options
author | mhasbini <mohammad.hasbini@gmail.com> | 2017-03-27 00:43:35 +0300 |
---|---|---|
committer | mhasbini <mohammad.hasbini@gmail.com> | 2017-03-27 00:43:35 +0300 |
commit | 6e6da4bbcc1dd8f2255d154423bee3a0f63847bc (patch) | |
tree | 3a898036f466412fff50795fd64bfe15e13f524f /app | |
parent | 37b5b7a5e6907c364800f6f58d37b6c0412255da (diff) | |
download | gitlab-ce-6e6da4bbcc1dd8f2255d154423bee3a0f63847bc.tar.gz |
Optimize labels finder query
Optimize labels finder query when searching for a project with a group
Diffstat (limited to 'app')
-rw-r--r-- | app/finders/labels_finder.rb | 13 |
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) |