Sha256: 304538ed9dd5fd1411b76d068090c445106501a225dbfb971becce9106a0073d

Contents?: true

Size: 1.6 KB

Versions: 10

Compression:

Stored size: 1.6 KB

Contents

# typed: ignore

# Copyright (c) 2015 Sqreen. All Rights Reserved.
# Please refer to our terms for more information: https://www.sqreen.com/terms.html

require 'sqreen/ecosystem/module_api'
require 'sqreen/ecosystem/module_api/instrumentation'
require 'sqreen/ecosystem/module_api/message_producer'
require 'sqreen/ecosystem/databases/database_connection_data'

module Sqreen
  module Ecosystem
    module Databases
      class Postgres
        include ModuleApi::Instrumentation
        include ModuleApi::MessageProducer

        def setup
          advice = wrap_for_interest(DatabaseConnectionData, &method(:after_advice))
          instrument 'PG::Connection#initialize', after: advice
        end

        private

        # instance is of type +PG::Connection+
        # > c = PG::Connection.new(host: '172.17.0.2', password: 'mysecretpassword', user: 'postgres')
        #  => #<PG::Connection:0x000055b44d077d10>
        # > %i{host port user db}.map { |m| c.send m }
        #  => ["172.17.0.2", 5432, "postgres", "postgres"]
        def after_advice(call, _ball)
          conn = call.instance

          # build & submit signal
          signal = DatabaseConnectionData.new(transport: :postgres)

          host = conn.host
          if host
            if host.include?('/')
              signal.unix_socket = host
              signal.host = 'localhost'
              signal.ip = '::1'
            else
              signal.host = host
            end
          end

          signal.port = conn.port
          signal.username = conn.user
          signal.db = conn.db

          signal
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
sqreen-1.25.1 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.25.0 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.24.3 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.24.2 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.24.1 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.24.0 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.23.2 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.23.1 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.23.0 lib/sqreen/ecosystem/databases/postgres.rb
sqreen-1.22.1 lib/sqreen/ecosystem/databases/postgres.rb