Class: DynamicQuery::Querier
- Inherits:
-
Object
- Object
- DynamicQuery::Querier
- Defined in:
- lib/dynamic_query.rb
Constant Summary collapse
- STMT_SUFFIX_DICT =
{ nil => '= ?', 'eq' => '= ?', 'not_eq' => '!= ?', 'gt' => '> ?', 'ge' => '>= ?', 'lt' => '< ?', 'le' => '<= ?', 'in' => 'IN (?)', 'not_in' => 'NOT IN (?)', 'like' => 'LIKE ?', 'not_like' => 'NOT LIKE ?', 'btw' => 'BETWEEN ? AND ?', 'not_btw' => 'NOT BETWEEN ? AND ?', 'between' => 'BETWEEN ? AND ?', 'not_between' => 'NOT BETWEEN ? AND ?', 'is' => 'IS ?', 'is_not' => 'IS NOT ?' }
Class Method Summary collapse
Class Method Details
.statement(conditions) ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/dynamic_query.rb', line 92 def self.statement(conditions) conditions ||= [] statement = [] values = [] conditions.each do |conds| and_conds = [] conds.each do |key, val| col, op = key.to_s.split(/\./) op = STMT_SUFFIX_DICT[op] and_conds << "#{col} #{op}" if ['BETWEEN ? AND ?', 'NOT BETWEEN ? AND ?'].include? op values << val[0] << val[1] else values << val end end statement << and_conds.join(' AND ') end values.unshift statement.map { |s| "(#{s})" }.join(' OR ') end |