class ConceptQL::Operators::Complement

Public Instance Methods

query(db) click to toggle source
# File lib/conceptql/operators/complement.rb, line 16
def query(db)
  upstream = upstreams.first
  upstream.domains(db).map do |domain|
    positive_query = db.from(upstream.evaluate(db))
      .select(:criterion_id)
      .exclude(:criterion_id => nil)
      .where(:criterion_domain => domain.to_s)
    query = db.from(make_table_name(domain))
      .exclude(make_domain_id(domain) => positive_query)
    db.from(select_it(query.clone(:force_columns=>table_columns(make_table_name(domain))), domain))
  end.inject do |union_query, q|
    union_query.union(q, all: true)
  end
end