Class: AlgebraDB::Exec::Delivery
- Inherits:
-
Object
- Object
- AlgebraDB::Exec::Delivery
- Defined in:
- lib/algebra_db/exec/delivery.rb
Overview
Something we can hand off to a connection to get back ruby values to play with.
Instance Method Summary collapse
- #execute!(connection) ⇒ Object
-
#execute_raw!(connection) ⇒ Object
Execute a query raw, IE, don’t do decoding.
-
#initialize(query_builder, select_decoder) ⇒ Delivery
constructor
A new instance of Delivery.
Constructor Details
#initialize(query_builder, select_decoder) ⇒ Delivery
7 8 9 10 |
# File 'lib/algebra_db/exec/delivery.rb', line 7 def initialize(query_builder, select_decoder) @query_builder = query_builder @select_decoder = select_decoder end |
Instance Method Details
#execute!(connection) ⇒ Object
12 13 14 15 16 17 18 19 20 21 |
# 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) ⇒ Object
Execute a query raw, IE, don’t do decoding.
25 26 27 28 29 30 31 32 |
# 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 |