Sha256: ea28383a80b0e7865f028a99d250d4684c443a19384e6f5917389e2169271b07

Contents?: true

Size: 1.82 KB

Versions: 13

Compression:

Stored size: 1.82 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 #{query['host'] || @uri.host}"
          end

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

          # @since 0.7.0
          # @api private
          def port
            port = query['port'] || @uri.port
            " -p #{port}" if port
          end

          # @since 0.7.0
          # @api private
          def username
            username = query['user'] || @uri.user
            " -U #{username}" if username
          end

          # @since 0.7.0
          # @api private
          def configure_password
            password = query['password'] || @uri.password
            ENV[PASSWORD] = CGI.unescape(query['password'] || @uri.password) if password
          end

          # @since 1.1.0
          # @api private
          def query
            return {} if @uri.query.nil? || @uri.query.empty?

            parsed_query = @uri.query.split("&").map { |a| a.split("=") }
            @query ||= Hash[parsed_query]
          end
        end
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
hanami-model-1.3.2 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.3.1 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.3.0 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.3.0.beta1 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.2.0 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.2.0.rc2 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.2.0.rc1 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.2.0.beta2 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.2.0.beta1 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.1.0 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.1.0.rc1 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.1.0.beta3 lib/hanami/model/sql/consoles/postgresql.rb
hanami-model-1.1.0.beta2 lib/hanami/model/sql/consoles/postgresql.rb