Class: ConceptQL::Nodes::Intersect
- Defined in:
- lib/conceptql/nodes/intersect.rb
Constant Summary
Constants inherited from Node
Instance Attribute Summary
Attributes inherited from Node
Instance Method Summary collapse
Methods inherited from Node
#arguments, #children, #columns, #date_columns, #evaluate, #initialize, #select_it, #stream
Constructor Details
This class inherits a constructor from ConceptQL::Nodes::Node
Instance Method Details
#query(db) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/conceptql/nodes/intersect.rb', line 10 def query(db) exprs = {} values.each do |expression| expression.types.each do |type| (exprs[type] ||= []) << expression.evaluate(db) end end typed_queries = exprs.map do |type, queries| queries.inject do |q, query| q.intersect(query, all: true) end end typed_queries.inject do |q, query| q.union(query, all: true) end end |
#types ⇒ Object
6 7 8 |
# File 'lib/conceptql/nodes/intersect.rb', line 6 def types values.map(&:types).flatten.uniq end |