summaryrefslogtreecommitdiff
path: root/app/finders/union_finder.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/finders/union_finder.rb')
-rw-r--r--app/finders/union_finder.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/app/finders/union_finder.rb b/app/finders/union_finder.rb
new file mode 100644
index 00000000000..33cd1a491f3
--- /dev/null
+++ b/app/finders/union_finder.rb
@@ -0,0 +1,11 @@
+class UnionFinder
+ def find_union(segments, klass)
+ if segments.length > 1
+ union = Gitlab::SQL::Union.new(segments.map { |s| s.select(:id) })
+
+ klass.where("#{klass.table_name}.id IN (#{union.to_sql})")
+ else
+ segments.first
+ end
+ end
+end