From b385e535beabe6b44802f5130c0de39969b1a125 Mon Sep 17 00:00:00 2001 From: Beth Skurrie Date: Mon, 1 Jun 2020 10:27:31 +1000 Subject: [PATCH] feat(database): log schema versions and migration info on startup --- lib/pact_broker/app.rb | 13 ++++++++++--- lib/pact_broker/db.rb | 10 +++++++++- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/lib/pact_broker/app.rb b/lib/pact_broker/app.rb index fe7f948ea..5b54d7b98 100644 --- a/lib/pact_broker/app.rb +++ b/lib/pact_broker/app.rb @@ -81,11 +81,18 @@ def post_configure end def prepare_database + logger.info "Database schema version is #{PactBroker::DB.version(configuration.database_connection)}" if configuration.auto_migrate_db - logger.info "Migrating database" - PactBroker::DB.run_migrations configuration.database_connection, allow_missing_migration_files: configuration.allow_missing_migration_files + migration_options = { allow_missing_migration_files: configuration.allow_missing_migration_files } + if PactBroker::DB.is_current?(configuration.database_connection, migration_options) + logger.info "Skipping database migrations as the latest migration has already been applied" + else + logger.info "Migrating database schema" + PactBroker::DB.run_migrations configuration.database_connection, migration_options + logger.info "Database schema version is now #{PactBroker::DB.version(configuration.database_connection)}" + end else - logger.info "Skipping database migrations" + logger.info "Skipping database schema migrations as database auto migrate is disabled" end if configuration.auto_migrate_db_data diff --git a/lib/pact_broker/db.rb b/lib/pact_broker/db.rb index e3861aed5..d04350596 100644 --- a/lib/pact_broker/db.rb +++ b/lib/pact_broker/db.rb @@ -2,12 +2,12 @@ require 'pact_broker/db/validate_encoding' require 'pact_broker/db/migrate' require 'pact_broker/db/migrate_data' +require 'pact_broker/db/version' Sequel.datetime_class = DateTime module PactBroker module DB - MIGRATIONS_DIR = File.expand_path("../../../db/migrations", __FILE__) def self.connection= connection @@ -27,6 +27,14 @@ def self.run_data_migrations database_connection PactBroker::DB::MigrateData.(database_connection) end + def self.is_current? database_connection, options = {} + Sequel::TimestampMigrator.is_current?(database_connection, PactBroker::DB::MIGRATIONS_DIR, options) + end + + def self.version database_connection + PactBroker::DB::Version.call(database_connection) + end + def self.validate_connection_config PactBroker::DB::ValidateEncoding.(connection) end