Class: ScopedSearch::QueryBuilder::OracleEnhancedAdapter

Inherits:
ScopedSearch::QueryBuilder show all
Defined in:
lib/scoped_search/oracle_enhanced.rb

Overview

The Oracle adapter also requires some tweaks to make the case insensitive LIKE work.

Instance Method Summary collapse

Instance Method Details

#sql_test(field, operator, value, lhs, &block) ⇒ Object

:yields: finder_option_type, value



18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/scoped_search/oracle_enhanced.rb', line 18

def sql_test(field, operator, value, lhs, &block) # :yields: finder_option_type, value
  if field.key_field
    yield(:parameter, lhs.sub(/^.*\./,''))
  end
  if field.textual? && [:like, :unlike].include?(operator)
    yield(:parameter, (value !~ /^\%|\*/ && value !~ /\%|\*$/) ? "%#{value}%" : value.to_s.tr_s('%*', '%'))
    return "LOWER(#{field.to_sql(operator, &block)}) #{self.sql_operator(operator, field)} LOWER(?)"
  elsif field.temporal?
    return datetime_test(field, operator, value, &block)
  else
    yield(:parameter, value)
    return "#{field.to_sql(operator, &block)} #{self.sql_operator(operator, field)} ?"
  end
end