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
- #class_derived_database_name ⇒ Object
- #connected_database ⇒ Object
- #connected_username ⇒ Object
- #database ⇒ Object
- #database_exist?(database_name = database) ⇒ Boolean
- #execute(sql) ⇒ Object
- #implicit_database_name ⇒ Object
- #run(sql) ⇒ Object
- #user_exist?(username = database) ⇒ Boolean
Instance Method Details
#class_derived_database_name ⇒ Object
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_database ⇒ Object
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_username ⇒ Object
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 |
#database ⇒ Object
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
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_name ⇒ Object
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.}" 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
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 |