Module: ScopedSearch::QueryBuilder::AST::LeafNode

Defined in:
lib/scoped_search/query_builder.rb

Overview

Defines the to_sql method for AST LeadNodes

Instance Method Summary collapse

Instance Method Details

#to_sql(builder, definition, &block) ⇒ Object



466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
# File 'lib/scoped_search/query_builder.rb', line 466

def to_sql(builder, definition, &block)
  # for boolean fields allow a short format (example: for 'enabled = true' also allow 'enabled')
  field = definition.field_by_name(value)
  if field && field.set? && field.complete_value.values.include?(true)
    key = field.complete_value.map{|k,v| k if v == true}.compact.first
    sql, *params = builder.set_test(field, :eq, key, &block)
    params.each { |p| yield(:parameter, p) }
    return sql
  end
  # Search keywords found without context, just search on all the default fields
  fragments = definition.default_fields_for(value).map do |field|
    builder.sql_test(field, field.default_operator, value,'', &block)
  end

  case fragments.length
    when 0 then nil
    when 1 then fragments.first
    else "#{fragments.join(' OR ')}"
  end
end