class AlgebraDB::Exec::Delivery

Something we can hand off to a connection to get back ruby values to play with.

Public Class Methods

new(query_builder, select_decoder) click to toggle source
# File lib/algebra_db/exec/delivery.rb, line 7
def initialize(query_builder, select_decoder)
  @query_builder = query_builder
  @select_decoder = select_decoder
end

Public Instance Methods

execute!(connection) { |decode_row| ... } click to toggle source
# File lib/algebra_db/exec/delivery.rb, line 12
def execute!(connection)
  return enum_for(:execute!, connection) unless block_given?

  execute_raw!(connection) do |result|
    result.type_map = @select_decoder.pg_type_map
    result.each do |row|
      yield @select_decoder.decode_row(row)
    end
  end
end
execute_raw!(connection) { |res| ... } click to toggle source

Execute a query raw, IE, don't do decoding.

# File lib/algebra_db/exec/delivery.rb, line 25
def execute_raw!(connection)
  sb = SyntaxBuilder.new.tap { |t| @query_builder.render_syntax(t) }
  # rubocop:disable Style/ExplicitBlockArgument
  connection.exec_params(sb.syntax, sb.params) do |res|
    yield res
  end
  # rubocop:enable Style/ExplicitBlockArgument
end