13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
# File 'lib/legion/data/migration.rb', line 13
def migrate(connection = Legion::Data.connection, path = "#{__dir__}/migrations", **)
if defined?(Legion::Mode) && Legion::Mode.respond_to?(:current) && !Legion::Mode.infra?
log.info "Legion::Data::Migration skipped (mode: #{Legion::Mode.current}, requires: infra)"
return
end
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
|