Module: Databases::Helpers

Included in:
Sequel::Postgres::Bootstrap
Defined in:
lib/story_teller/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



49
50
51
# File 'lib/story_teller/database.rb', line 49

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

#connected_databaseObject



86
87
88
89
# File 'lib/story_teller/database.rb', line 86

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

#connected_usernameObject



91
92
93
94
# File 'lib/story_teller/database.rb', line 91

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

#databaseObject



63
64
65
66
# File 'lib/story_teller/database.rb', line 63

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

#database_exist?(database_name = database) ⇒ Boolean

Returns:

  • (Boolean)


76
77
78
79
# File 'lib/story_teller/database.rb', line 76

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



68
69
70
# File 'lib/story_teller/database.rb', line 68

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

#implicit_database_nameObject



53
54
55
56
57
58
59
60
61
# File 'lib/story_teller/database.rb', line 53

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



72
73
74
# File 'lib/story_teller/database.rb', line 72

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

#user_exist?(username = database) ⇒ Boolean

Returns:

  • (Boolean)


81
82
83
84
# File 'lib/story_teller/database.rb', line 81

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