class SqlQueryExecutor::Operators::Base
Public Class Methods
new(query)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 6 def initialize(query) @query = query end
Public Instance Methods
logic(is_hash=false)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 15 def logic(is_hash=false) initialize_attributes(true) field = field(is_hash) value = @value || 'nil' if value.is_a?(String) && is_a_number?(value.gsub(/[\"|\']/, '')) "#{field} #{@operator} (#{field}.is_a?(Fixnum) ? #{value}.to_i : #{value})" else "#{field} #{@operator} #{value}" end end
selector()
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 10 def selector initialize_attributes { @field => @value } end
Protected Instance Methods
convert_value(value, logic=false)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 53 def convert_value(value, logic=false) real_value = value.dup value.gsub!(/[\(\)\'\"]/, "") methods = {3 => "convert_date", 7 => "convert_time"} array = split(value) if methods.keys.include?(array.size) date_value = send(methods[array.size], array, logic) return date_value if date_value end unless logic && ["'", '"'].include?(real_value[0]) return value.to_i if is_a_number?(value) return value.to_f if is_a_number?(value, true) return eval(value) if ['true', 'false'].include?(value) end logic ? "'#{value}'" : value end
field(is_hash)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 29 def field(is_hash) is_hash ? "self[:#{@field}]" : "#{@field}" end
get_field()
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 43 def get_field @array.first end
get_value(logic=false)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 47 def get_value(logic=false) value = @array.last.gsub(SqlQueryExecutor::Base::STRING_SPACE, ' ') convert_value(value, logic) end
initialize_attributes(logic=false)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 33 def initialize_attributes(logic=false) return if @array @query = SqlQueryExecutor::Query::Normalizers::QueryNormalizer.execute(@query).gsub(SqlQueryExecutor::Base::QUERY_SPACE, ' ') @array = @query.split(' ') @operator = convert_operator @field = get_field @value = get_value(logic) end
Private Instance Methods
convert_date(args, logic=false)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 101 def convert_date(args, logic=false) return if args.first.to_i < 1000 if logic "Date.new(#{args[0].to_i}, #{args[1].to_i}, #{args[2].to_i})" else Date.new(args[0].to_i, args[1].to_i, args[2].to_i) end end
convert_operator()
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 85 def convert_operator operators_to_convert = {'<>' => '!=', '=' => '=='} operator = @array[1] operators_to_convert[operator] || operator end
convert_time(args, logic=false)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 111 def convert_time(args, logic=false) return if args.first.to_i < 1000 args[6] = args[6].gsub('00', ':00').gsub("+:", "+") if logic timezone = args.delete(args.last) "Time.new(#{args.join(',')},'#{timezone}')" else Time.new(*args) end end
is_a_number?(value, float=false)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 77 def is_a_number?(value, float=false) if float Float(value) else Integer(value) end rescue false end
split(value)
click to toggle source
# File lib/sql_query_executor/operators/base.rb, line 93 def split(value) return [] unless value.size >= 10 array = value.split(/[ :]/) array[0] = array.first.split('-') array.flatten end