class DbVcs::Adapters::Postgres

Public Class Methods

config() click to toggle source

@return [DbVcs::Adapters::Postgres::Config]

# File lib/db_vcs/adapters/postgres.rb, line 23
def config
  DbVcs.config.pg_config
end
connection() click to toggle source

@return [PG::Connection]

# File lib/db_vcs/adapters/postgres.rb, line 28
def connection
  @connection ||=
    begin
      require "pg"
      PG.connect(user: config.username, host: config.host, port: config.port, password: config.password)
    end
end
copy_database(to_db, from_db) click to toggle source

@param to_db [String] @param from_db [String] @return void

# File lib/db_vcs/adapters/postgres.rb, line 45
def copy_database(to_db, from_db)
  connection.exec("CREATE DATABASE #{to_db} TEMPLATE #{from_db} OWNER #{config.username}")
end
create_database(db_name) click to toggle source

@param db_name [String] @return void

# File lib/db_vcs/adapters/postgres.rb, line 51
def create_database(db_name)
  connection.exec("CREATE DATABASE #{db_name} OWNER #{config.username}")
end
db_exists?(db_name) click to toggle source

@param db_name [String] @return [Boolean]

# File lib/db_vcs/adapters/postgres.rb, line 38
def db_exists?(db_name)
  !connection.exec("SELECT 1 AS one FROM pg_database WHERE datname='#{db_name}' LIMIT 1").first.nil?
end
drop_by_dbname(db_name) click to toggle source

@param db_name [String] @return [void]

# File lib/db_vcs/adapters/postgres.rb, line 62
def drop_by_dbname(db_name)
  connection.exec("DROP DATABASE IF EXISTS #{db_name}")
end
list_databases() click to toggle source

@return [Array<String>]

# File lib/db_vcs/adapters/postgres.rb, line 56
def list_databases
  connection.exec("SELECT datname FROM pg_database WHERE datistemplate = false").to_a.flat_map(&:values)
end