class BlazerJsonAPI::ProcessStatementVariables
Attributes
data_source[R]
params[R]
statement[R]
Public Class Methods
new(statement, data_source, params)
click to toggle source
# File lib/blazer_json_api/process_statement_variables.rb, line 10 def initialize(statement, data_source, params) @statement = statement @data_source = data_source @params = params end
Public Instance Methods
call()
click to toggle source
# File lib/blazer_json_api/process_statement_variables.rb, line 16 def call bind_variables.each do |variable| value = params[variable].presence if value if variable.end_with?('_at') begin value = Blazer.time_zone.parse(value) rescue StandardError # do nothing end end if /\A\d+\z/.match?(value.to_s) value = value.to_i elsif /\A\d+\.\d+\z/.match?(value.to_s) value = value.to_f end end if Blazer.transform_variable value = Blazer.transform_variable.call(variable, value) end statement.gsub!("{#{variable}}", ActiveRecord::Base.connection.quote(value)) end end
Private Instance Methods
bind_variables()
click to toggle source
# File lib/blazer_json_api/process_statement_variables.rb, line 43 def bind_variables @bind_variables ||= begin (bind_variables ||= []).concat(Blazer.extract_vars(statement)).uniq! bind_variables.each do |variable| params[variable] ||= Blazer.data_sources[data_source].variable_defaults[variable] end end end