module Pakyow::Data::Adapters::Sql::Migrator::AdapterMethods::Postgres

Public Class Methods

globalize_connection_opts!(connection_opts) click to toggle source
# File lib/pakyow/data/adapters/sql/migrator/adapter_methods.rb, line 62
def self.globalize_connection_opts!(connection_opts)
  connection_opts[:initial] = Sql.build_opts(path: connection_opts[:path])
  connection_opts[:path] = "template1"
end

Public Instance Methods

create!() click to toggle source
# File lib/pakyow/data/adapters/sql/migrator/adapter_methods.rb, line 38
def create!
  handle_error do
    @connection.adapter.connection.run("CREATE DATABASE \"#{database}\"")
  end
end
drop!() click to toggle source
# File lib/pakyow/data/adapters/sql/migrator/adapter_methods.rb, line 44
              def drop!
                handle_error do
                  @connection.adapter.connection.run <<~SQL
                    SELECT
                    pg_terminate_backend(pid)
                    FROM
                    pg_stat_activity
                    WHERE
                    -- don't kill my own connection!
                    pid <> pg_backend_pid()
                    -- don't kill the connections to other databases
                    AND datname = '#{@connection.opts[:path]}';
                  SQL

                  @connection.adapter.connection.run("DROP DATABASE \"#{database}\"")
                end
              end

Private Instance Methods

database() click to toggle source
# File lib/pakyow/data/adapters/sql/migrator/adapter_methods.rb, line 67
        def database
  if @connection.opts.key?(:initial)
    @connection.opts[:initial][:path]
  else
    @connection.opts[:path]
  end
end