Sha256: faf28e407750388f3a2502afbfb288eb88c804f0010b43976bac70cd07b23eb2
Contents?: true
Size: 670 Bytes
Versions: 3
Compression:
Stored size: 670 Bytes
Contents
require_relative 'pass_thru' module ConceptQL module Nodes class Intersect < PassThru def types values.map(&:types).flatten.uniq end def query(db) exprs = {} values.each do |expression| evaled = expression.evaluate(db) expression.types.each do |type| (exprs[type] ||= []) << evaled 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 end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
conceptql-0.0.6 | lib/conceptql/nodes/intersect.rb |
conceptql-0.0.5 | lib/conceptql/nodes/intersect.rb |
conceptql-0.0.4 | lib/conceptql/nodes/intersect.rb |