class DataPitcher::Executor

Public Class Methods

new(query) click to toggle source
# File lib/data_pitcher/executor.rb, line 3
def initialize(query)
  @query = query
end

Public Instance Methods

execute() click to toggle source
# File lib/data_pitcher/executor.rb, line 7
def execute
  result(select_query)
end
valid?() click to toggle source
# File lib/data_pitcher/executor.rb, line 11
def valid?
  select_query
  true
rescue => e
  false
end

Private Instance Methods

connection() click to toggle source
# File lib/data_pitcher/executor.rb, line 20
def connection
  ActiveRecord::Base.connection
end
result(ar) click to toggle source
# File lib/data_pitcher/executor.rb, line 39
def result(ar)
  DataPitcher::Result.new(ar.columns, ar.rows)
end
select_query() click to toggle source
# File lib/data_pitcher/executor.rb, line 33
def select_query
  with_sandbox do
    connection.exec_query(@query)
  end
end
with_sandbox() { || ... } click to toggle source
# File lib/data_pitcher/executor.rb, line 24
def with_sandbox
  result = nil
  connection.transaction do
    result = yield
    raise ActiveRecord::Rollback
  end
  result
end