Module: Databases::Helpers

Included in:
Sequel::Postgres::Bootstrap
Defined in:
lib/runtime/database.rb

Overview

The Databases::Helpers module

Constant Summary collapse

MigrationMethods =
%i[down up].freeze
NamespaceDelimiterPattern =
/::/.freeze
DatabasePattern =
/Database/.freeze

Instance Method Summary collapse

Instance Method Details

#class_derived_database_nameObject



47
48
49
# File 'lib/runtime/database.rb', line 47

def class_derived_database_name
  self.class.name.split(NamespaceDelimiterPattern).last.sub(DatabasePattern, '')
end

#connected_databaseObject



84
85
86
87
# File 'lib/runtime/database.rb', line 84

def connected_database
  return nil unless Sequel::Model.db
  Sequel::Model.db.opts[:uri].to_s.scan(/:\/\/\w+(:\d+|\/)(\w+)/).last
end

#connected_usernameObject



89
90
91
92
# File 'lib/runtime/database.rb', line 89

def connected_username
  return nil unless Sequel::Model.db
  Sequel::Model.db.opts[:uri].to_s.scan(/user=(\w+)/).first
end

#databaseObject



61
62
63
64
# File 'lib/runtime/database.rb', line 61

def database
  # implicit_database_name
  underscore(Inform::Databases.instances.keys.first).to_sym
end

#database_exist?(database_name = database) ⇒ Boolean

Returns:

  • (Boolean)


74
75
76
77
# File 'lib/runtime/database.rb', line 74

def database_exist?(database_name = database)
  result = execute("select count(*) > 0 from pg_catalog.pg_database where datname = '#{database_name}';")&.first
  result&.values&.first == true
end

#execute(sql) ⇒ Object



66
67
68
# File 'lib/runtime/database.rb', line 66

def execute(sql)
  Sequel::Model.db[sql]
end

#implicit_database_nameObject



51
52
53
54
55
56
57
58
59
# File 'lib/runtime/database.rb', line 51

def implicit_database_name
  implicit_database_name = self.class.name
  begin
    implicit_database_name = underscore(demodulize(class_derived_database_name)).to_sym
  rescue StandardError => e
    log.warn "Failed to get implicit database name: #{e.message}"
  end
  implicit_database_name
end

#run(sql) ⇒ Object



70
71
72
# File 'lib/runtime/database.rb', line 70

def run(sql)
  Sequel::Model.db.run(sql)
end

#user_exist?(username = database) ⇒ Boolean

Returns:

  • (Boolean)


79
80
81
82
# File 'lib/runtime/database.rb', line 79

def user_exist?(username = database)
  result = execute("select count(*) > 0 from pg_shadow where usename = '#{username}';")&.first
  result&.values&.first == true
end