Sha256: 321b218cf722c6ef96b1f84d06a2e9d1ea98e8c769ba162ad84caed716653a77

Contents?: true

Size: 976 Bytes

Versions: 32

Compression:

Stored size: 976 Bytes

Contents

# frozen_string_literal: true

module PgEventstore
  class PgConnection < PG::Connection
    def exec(sql)
      log(sql, [])
      super
    end

    def exec_params(sql, params, ...)
      log(sql, params)
      super
    end

    private

    def log(sql, params)
      return unless PgEventstore.logger&.debug?

      sql = sql.gsub(/\$\d+/).each do |matched|
        value = params[matched[1..].to_i - 1]
        value = encode_value(value)
        normalize_value(value)
      end unless params&.empty?
      PgEventstore.logger.debug(sql)
    end

    def encode_value(value)
      encoder = type_map_for_queries[value.class]
      return type_map_for_queries.send(encoder, value).encode(value) if encoder.is_a?(Symbol)

      type_map_for_queries[value.class]&.encode(value) || value
    end

    def normalize_value(value)
      case value
      when String
        "'#{value}'"
      when NilClass
        'NULL'
      else
        value
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
pg_eventstore-1.9.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.8.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.7.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.6.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.5.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.4.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.3.4 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.3.3 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.3.2 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.3.1 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.3.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.2.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.1.5 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.1.4 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.1.3 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.1.2 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.1.1 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.1.0 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.0.4 lib/pg_eventstore/pg_connection.rb
pg_eventstore-1.0.0.rc2 lib/pg_eventstore/pg_connection.rb