class TrainPlugins::Pgsql::Connection

Public Class Methods

new(options) click to toggle source
Calls superclass method
# File lib/train-pgsql/connection.rb, line 7
def initialize(options)
  super(options)
  enable_cache(:command)
end

Public Instance Methods

close() click to toggle source
# File lib/train-pgsql/connection.rb, line 18
def close
  return if @connection.nil?

  logger.info format('[Pgsql] Closed connection to %s:%d', @options[:host], @options[:port])
  @connection.finish
ensure
  @connection = nil
end
connect() click to toggle source
# File lib/train-pgsql/connection.rb, line 55
def connect
  logger.info format('[Pgsql] Opening connection to %s:%d', @options[:host], @options[:port])

  @connection = PG::Connection.new(
    host: @options[:host],
    port: @options[:port],
    user: @options[:user],
    password: @options[:password],
    dbname: @options[:database]
  )

  @connection
end
connection() click to toggle source
# File lib/train-pgsql/connection.rb, line 51
def connection
  @connection ||= connect
end
platform() click to toggle source
# File lib/train-pgsql/connection.rb, line 12
def platform
  Train::Platforms.name('pgsql').in_family('sql')
  force_platform!('pgsql',
                  release: TrainPlugins::Pgsql::VERSION)
end
run_command_via_connection(query) click to toggle source
# File lib/train-pgsql/connection.rb, line 31
def run_command_via_connection(query)
  stdout = ''
  stderr = ''
  exit_status = 0

  logger.debug format('[Pgsql] Sending command (%s) to %s:%d', query, @options[:host], @options[:port])
  begin
    connection.exec(query) do |result|
      stdout = {
        'fields' => result.fields,
        'values' => result.values
       }
      # stdout = result.values
    end
  rescue PG::Error => e
    stderr = e.message
  end
  CommandResult.new(stdout, stderr, exit_status)
end
uri() click to toggle source
# File lib/train-pgsql/connection.rb, line 27
def uri
  "pgsql://#{options[:user]}@#{@options[:host]}:#{@options[:port]}/#{@options[:database]}"
end