Class: SqlLogic::SQLArrayParam

Inherits:
Object
  • Object
show all
Defined in:
lib/sql_logic/sql_array_param.rb

Instance Method Summary collapse

Constructor Details

#initialize(param = nil) ⇒ SQLArrayParam

Returns a new instance of SQLArrayParam.



3
4
5
6
# File 'lib/sql_logic/sql_array_param.rb', line 3

def initialize(param = nil)
  @param_ary ||= ["", {}]
  @param_ary = param.to_a if param
end

Instance Method Details

#add(param, connector = "AND") ⇒ Object



28
29
30
31
32
33
# File 'lib/sql_logic/sql_array_param.rb', line 28

def add(param, connector = "AND")
  data = pre_add(param)
  self.sql+=((self.sql.blank? ? "" : " #{connector} ") + data.sql)
  self.sql_params.merge!(data.sql_params)
  return self
end

#merge!(param, param1, connector = "AND") ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/sql_logic/sql_array_param.rb', line 49

def merge!(param, param1, connector = "AND")
  param = SQLArrayParam.new(param) if param.is_a?(Array)
  param1 = SQLArrayParam.new(param1) if param1.is_a?(Array)
  data = pre_add(param)
  self.sql_params.merge!(data.sql_params)
  data1 = pre_add(param1)
  self.sql_params.merge!(data1.sql_params)
  if data.sql.blank?
    self.sql += data1.sql
  else
    self.sql += ["(", data.sql, " #{connector} ", data1.sql, ")"].join
  end

  return true
end

#pre_add(param) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/sql_logic/sql_array_param.rb', line 35

def pre_add(param)
  param = SQLArrayParam.new(param) if param.is_a?(Array)
  new_sql = param.sql
  new_param = {}
  param.sql_params.each do |key, value|
    new_key = valid_key(key)
    if new_key!=key
      new_sql.gsub!(Regexp.new(":#{key}\\b"), ":#{new_key}")
    end
    new_param.merge!({new_key=>value})
  end
  return SQLArrayParam.new([new_sql, new_param])
end

#sqlObject



12
13
14
# File 'lib/sql_logic/sql_array_param.rb', line 12

def sql
  @param_ary[0]
end

#sql=(value) ⇒ Object



16
17
18
# File 'lib/sql_logic/sql_array_param.rb', line 16

def sql=(value)
  @param_ary[0]=value
end

#sql_paramsObject



20
21
22
# File 'lib/sql_logic/sql_array_param.rb', line 20

def sql_params
  @param_ary[1]
end

#sql_params=(value) ⇒ Object



24
25
26
# File 'lib/sql_logic/sql_array_param.rb', line 24

def sql_params=(value)
  @param_ary[1]=value
end

#to_aObject



8
9
10
# File 'lib/sql_logic/sql_array_param.rb', line 8

def to_a
  @param_ary
end

#valid_key(key, i = 0) ⇒ Object



65
66
67
68
69
70
71
# File 'lib/sql_logic/sql_array_param.rb', line 65

def valid_key(key, i=0)
  if self.sql_params.keys.include?(key)
    return valid_key("#{key}_#{i}".to_sym, i+1)
  else
    return key
  end
end