Sha256: f403011c3294631683dfb66b82dff32762b16f99d0c655827b94c1807bc03ea7

Contents?: true

Size: 687 Bytes

Versions: 1

Compression:

Stored size: 687 Bytes

Contents

module Adhoq
  class Executor
    class << self
      def select(query)
        with_sandbox do
          current_connection.exec_query(query)
        end
      end

      def current_connection
        ActiveRecord::Base.connection
      end

      def with_sandbox
        result = nil
        ActiveRecord::Base.transaction do
          result = yield
          raise ActiveRecord::Rollback
        end
        result
      end
    end

    def initialize(query)
      @query = query
    end

    def execute
      wrap_result(self.class.select(@query))
    end

    private

    def wrap_result(ar_result)
      Adhoq::Result.new(ar_result.columns, ar_result.rows)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
adhoq-0.0.3 lib/adhoq/executor.rb