Class: ConceptQL::Nodes::Complement

Inherits:
PassThru show all
Defined in:
lib/conceptql/nodes/complement.rb

Constant Summary

Constants inherited from Node

Node::KNOWN_TYPES

Instance Attribute Summary

Attributes inherited from Node

#values

Instance Method Summary collapse

Methods inherited from PassThru

#types

Methods inherited from Node

#arguments, #children, #columns, #date_columns, #evaluate, #initialize, #select_it, #stream, #types

Constructor Details

This class inherits a constructor from ConceptQL::Nodes::Node

Instance Method Details

#query(db) ⇒ Object



6
7
8
9
10
11
12
13
# File 'lib/conceptql/nodes/complement.rb', line 6

def query(db)
  child = children.first
  child.types.map do |type|
    select_it(db.from(make_table_name(type)).exclude(type_id(type) => child.evaluate(db).select(type_id(type)).from_self.exclude(type_id(type) => nil)), [type])
  end.inject do |union_query, q|
    union_query.union(q, all: true)
  end
end