class PSQLToys::Template::Base

Base class for templates

Constants

PGPASS_FILE

Attributes

db_config_proc[R]

`db_config_proc` getter for `Dumps` sub-tools

db_connection_proc[R]

`db_config_proc` getter for `Dumps` sub-tools

db_extensions[R]

`db_config_proc` getter for `Dumps` sub-tools

Public Class Methods

new(db_config_proc:, db_extensions:, db_connection_proc: nil) click to toggle source
# File lib/psql_toys/template/_base.rb, line 15
def initialize(db_config_proc:, db_extensions:, db_connection_proc: nil)
        @db_config_proc = db_config_proc
        @db_connection_proc = db_connection_proc
        @db_extensions = db_extensions
end

Public Instance Methods

confirm(prompt) click to toggle source
# File lib/psql_toys/template/_base.rb, line 50
def confirm(prompt)
        require 'highline'
        highline = HighLine.new

        highline.choose do |menu|
                menu.layout = :one_line

                menu.prompt = prompt

                menu.choice(:yes) { nil }
                menu.choice(:no) { abort 'OK' }
        end
end
db_access(superuser: false) click to toggle source
# File lib/psql_toys/template/_base.rb, line 25
        def db_access(superuser: false)
        user = superuser ? db_config.fetch(:superuser, 'postgres') : db_config[:user]

        { '-U' => user, '-h' => db_config[:host] }
                .compact
                .map { |key, value| "#{key} #{value}" }
                .join(' ')
end
db_config() click to toggle source
# File lib/psql_toys/template/_base.rb, line 21
        def db_config
        db_config_proc.call
end
db_connection() click to toggle source
# File lib/psql_toys/template/_base.rb, line 34
        def db_connection
        db_connection_proc.call
end
update_pgpass() click to toggle source
# File lib/psql_toys/template/_base.rb, line 40
def update_pgpass
        pgpass_lines =
                File.exist?(PGPASS_FILE) ? File.read(PGPASS_FILE).split($RS) : []

        return if pgpass_lines&.include? pgpass_line

        File.write PGPASS_FILE, pgpass_lines.push(pgpass_line, nil).join($RS)
        File.chmod(0o600, PGPASS_FILE)
end

Private Instance Methods

pgpass_line() click to toggle source
# File lib/psql_toys/template/_base.rb, line 66
        def pgpass_line
        db_config
                .fetch_values(:host, :port, :database, :user, :password) { |_key| '*' }
                .join(':')
end