Sha256: b8ef60d9b1197d12ce2f28d5d919ceb1a2aa970080dcbcb6c0d2f1a284115dae

Contents?: true

Size: 1.42 KB

Versions: 4

Compression:

Stored size: 1.42 KB

Contents

require_relative 'abstract'
require 'cgi'

module Hanami
  module Model
    module Sql
      module Consoles
        # PostgreSQL adapter
        #
        # @since 0.7.0
        # @api private
        class Postgresql < Abstract
          # @since 0.7.0
          # @api private
          COMMAND = 'psql'.freeze

          # @since 0.7.0
          # @api private
          PASSWORD = 'PGPASSWORD'.freeze

          # @since 0.7.0
          # @api private
          def connection_string
            configure_password
            concat(command, host, database, port, username)
          end

          private

          # @since 0.7.0
          # @api private
          def command
            COMMAND
          end

          # @since 0.7.0
          # @api private
          def host
            " -h #{@uri.host}"
          end

          # @since 0.7.0
          # @api private
          def database
            " -d #{database_name}"
          end

          # @since 0.7.0
          # @api private
          def port
            " -p #{@uri.port}" unless @uri.port.nil?
          end

          # @since 0.7.0
          # @api private
          def username
            " -U #{@uri.user}" unless @uri.user.nil?
          end

          # @since 0.7.0
          # @api private
          def configure_password
            ENV[PASSWORD] = CGI.unescape(@uri.password) unless @uri.password.nil?
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
hanami-model-1.0.4 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.0.3 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.1.0.beta1 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.0.2 lib/hanami/model/sql/consoles/postgresql.rb