class SqlQueryExecutor::Query::Normalizers::OriginNormalizer
Constants
- BINDING_OPERATORS
- OPERATORS
Public Class Methods
execute(query)
click to toggle source
# File lib/sql_query_executor/query/normalizers/origin_normalizer.rb, line 18 def self.execute(query) query_array = [] query.each do |key, value| if value.is_a?(Array) query_array << hash_with_array_value(key, value) else query_array << normal_hash(key, value) end end query_array.join(" and ").gsub('!=', '<>') end
Private Class Methods
hash_with_array_value(key, value)
click to toggle source
# File lib/sql_query_executor/query/normalizers/origin_normalizer.rb, line 34 def self.hash_with_array_value(key, value) if BINDING_OPERATORS.include?(key) key = key.gsub('$', '') queries = [] value.each do |hash| queries << execute(hash) end "(#{queries.join(" #{key.to_s} ")})" else value = value.first.is_a?(Numeric) ? value : value.map{ |v| "'#{v}'" } "#{key} in (#{value.join(',')})" end end
normal_hash(key, value)
click to toggle source
# File lib/sql_query_executor/query/normalizers/origin_normalizer.rb, line 50 def self.normal_hash(key, value) operator = '=' if value.is_a?(Hash) operator = OPERATORS[value.keys.first] || operator value = convert_param(value.values.first) end value = convert_param(value) value.nil? ? "#{key} is null" : "#{key} #{operator} #{value}" end