Class: Avm::EacPostgresqlBase0::Instance::Assert

Inherits:
Object
  • Object
show all
Defined in:
lib/avm/eac_postgresql_base0/instance/assert.rb

Instance Method Summary collapse

Instance Method Details

#change_ownerObject



19
20
21
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 19

def change_owner
  root_execute("ALTER DaTABASE \"#{name}\" OWNER TO \"#{user}\"")
end

#change_passwordObject



23
24
25
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 23

def change_password
  root_execute("ALTER USER \"#{user}\" WITH PASSWORD '#{password}'")
end

#create_databaseObject



57
58
59
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 57

def create_database
  root_execute("CREATE DATABASE \"#{name}\" WITH OWNER \"#{user}\"")
end

#create_userObject



27
28
29
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 27

def create_user
  root_execute("CREATE USER \"#{user}\" WITH PASSWORD '#{password}'")
end

#current_ownerObject



31
32
33
34
35
36
37
38
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 31

def current_owner
  root_query(<<~SQL
    SELECT pg_catalog.pg_get_userbyid(datdba)
    FROM pg_catalog.pg_database
    WHERE datname = '#{name}'
  SQL
            )
end

#database_exist?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 40

def database_exist?
  root_boolean_query("FROM pg_database WHERE datname='#{name}'")
end

#password_ok?Boolean

Returns:

  • (Boolean)


44
45
46
47
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 44

def password_ok?
  instance.psql_command_command('SELECT 1', false)
          .execute!(exit_outputs: { 512 => 'login_failed' }).strip == '1'
end

#performObject



12
13
14
15
16
17
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 12

def perform
  create_user unless user_exist?
  change_password unless password_ok?
  create_database unless database_exist?
  change_owner unless user_owner?
end

#user_exist?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 49

def user_exist?
  root_boolean_query("FROM pg_roles WHERE rolname='#{user}'")
end

#user_owner?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/avm/eac_postgresql_base0/instance/assert.rb', line 53

def user_owner?
  user == current_owner
end