Module: Legion::Data::Migration

Extended by:
Logging::Helper
Defined in:
lib/legion/data/migration.rb

Class Method Summary collapse

Methods included from Logging::Helper

handle_exception

Class Method Details

.migrate(connection = Legion::Data.connection, path = "#{__dir__}/migrations") ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/legion/data/migration.rb', line 13

def migrate(connection = Legion::Data.connection, path = "#{__dir__}/migrations", **)
  Legion::Settings[:data][:migrations][:version] = Sequel::Migrator.run(connection, path, **)
  log.info("Legion::Data::Migration ran successfully to version #{Legion::Settings[:data][:migrations][:version]}")
  Legion::Settings[:data][:migrations][:ran] = true
rescue Sequel::DatabaseError => e
  handle_exception(e, level: :error, handled: false, operation: :migrate, path: path)
  if e.message.include?('InsufficientPrivilege') || e.message.include?('permission denied')
    raise Sequel::DatabaseError,
          "#{e.message}\n  Hint: the database user lacks CREATE on schema public " \
          '(required for PG 15+). Grant via: GRANT CREATE ON SCHEMA public TO <user>;'
  end
  raise
end