Skip to content

Commit b385e53

Browse files
committed
feat(database): log schema versions and migration info on startup
1 parent 143613e commit b385e53

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

lib/pact_broker/app.rb

+10-3
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,18 @@ def post_configure
8181
end
8282

8383
def prepare_database
84+
logger.info "Database schema version is #{PactBroker::DB.version(configuration.database_connection)}"
8485
if configuration.auto_migrate_db
85-
logger.info "Migrating database"
86-
PactBroker::DB.run_migrations configuration.database_connection, allow_missing_migration_files: configuration.allow_missing_migration_files
86+
migration_options = { allow_missing_migration_files: configuration.allow_missing_migration_files }
87+
if PactBroker::DB.is_current?(configuration.database_connection, migration_options)
88+
logger.info "Skipping database migrations as the latest migration has already been applied"
89+
else
90+
logger.info "Migrating database schema"
91+
PactBroker::DB.run_migrations configuration.database_connection, migration_options
92+
logger.info "Database schema version is now #{PactBroker::DB.version(configuration.database_connection)}"
93+
end
8794
else
88-
logger.info "Skipping database migrations"
95+
logger.info "Skipping database schema migrations as database auto migrate is disabled"
8996
end
9097

9198
if configuration.auto_migrate_db_data

lib/pact_broker/db.rb

+9-1
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
require 'pact_broker/db/validate_encoding'
33
require 'pact_broker/db/migrate'
44
require 'pact_broker/db/migrate_data'
5+
require 'pact_broker/db/version'
56

67
Sequel.datetime_class = DateTime
78

89
module PactBroker
910
module DB
10-
1111
MIGRATIONS_DIR = File.expand_path("../../../db/migrations", __FILE__)
1212

1313
def self.connection= connection
@@ -27,6 +27,14 @@ def self.run_data_migrations database_connection
2727
PactBroker::DB::MigrateData.(database_connection)
2828
end
2929

30+
def self.is_current? database_connection, options = {}
31+
Sequel::TimestampMigrator.is_current?(database_connection, PactBroker::DB::MIGRATIONS_DIR, options)
32+
end
33+
34+
def self.version database_connection
35+
PactBroker::DB::Version.call(database_connection)
36+
end
37+
3038
def self.validate_connection_config
3139
PactBroker::DB::ValidateEncoding.(connection)
3240
end

0 commit comments

Comments
 (0)