Sha256: 1bf850aebb2d83966c0a9059019fc9d3f6978805df9748b0e8a0ced2a6b9f0f2

Contents?: true

Size: 982 Bytes

Versions: 4

Compression:

Stored size: 982 Bytes

Contents

# frozen_string_literal: true

module Motor
  module Queries
    module PostgresqlExecQuery
      module_function

      def call(conn, statement)
        if Rails.version.to_f >= 8.0
          result = conn.send(:internal_execute, *statement)
          process_result(conn, result)
        else
          conn.send(:execute_and_clear, *statement) do |result|
            process_result(conn, result)
          end
        end
      end

      def process_result(conn, result)
        types = {}
        fields = result.fields

        fields.each_with_index do |fname, i|
          ftype = result.ftype i
          fmod  = result.fmod i
          types[fname] = conn.send(:get_oid_type, ftype, fmod, fname)
        end

        if conn.respond_to?(:build_result, true)
          conn.send(:build_result, columns: fields, rows: result.values, column_types: types)
        else
          ActiveRecord::Result.new(fields, result.values, types)
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
motor-admin-0.4.36 lib/motor/queries/postgresql_exec_query.rb
motor-admin-0.4.35 lib/motor/queries/postgresql_exec_query.rb
motor-admin-0.4.34 lib/motor/queries/postgresql_exec_query.rb
motor-admin-0.4.33 lib/motor/queries/postgresql_exec_query.rb