Skip to content

Commit ec59ba5

Browse files
committed
feat: run data migrations on startup to ensure data created by old nodes is migrated when performing a rolling update
1 parent 1bf61af commit ec59ba5

File tree

4 files changed

+25
-1
lines changed

4 files changed

+25
-1
lines changed

lib/pact_broker/app.rb

+8
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,14 @@ def prepare_database
7575
else
7676
logger.info "Skipping database migrations"
7777
end
78+
79+
if configuration.auto_migrate_db_data
80+
logger.info "Migrating data"
81+
PactBroker::DB.run_data_migrations configuration.database_connection
82+
else
83+
logger.info "Skipping data migrations"
84+
end
85+
7886
require 'pact_broker/webhooks/service'
7987
PactBroker::Webhooks::Service.fail_retrying_triggered_webhooks
8088
end

lib/pact_broker/configuration.rb

+2-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ class Configuration
3131
:base_equality_only_on_content_that_affects_verification_results
3232
]
3333

34-
attr_accessor :log_dir, :database_connection, :auto_migrate_db, :use_hal_browser, :html_pact_renderer
34+
attr_accessor :log_dir, :database_connection, :auto_migrate_db, :auto_migrate_db_data, :use_hal_browser, :html_pact_renderer
3535
attr_accessor :validate_database_connection_config, :enable_diagnostic_endpoints, :version_parser, :sha_generator
3636
attr_accessor :use_case_sensitive_resource_names, :order_versions_by_date
3737
attr_accessor :check_for_potential_duplicate_pacticipant_names
@@ -63,6 +63,7 @@ def self.default_configuration
6363
config = Configuration.new
6464
config.log_dir = File.expand_path("./log")
6565
config.auto_migrate_db = true
66+
config.auto_migrate_db_data = true
6667
config.use_hal_browser = true
6768
config.validate_database_connection_config = true
6869
config.enable_diagnostic_endpoints = true

lib/pact_broker/db.rb

+6
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
require 'sequel'
22
require 'pact_broker/db/validate_encoding'
3+
require 'pact_broker/db/migrate'
4+
require 'pact_broker/db/migrate_data'
35

46
Sequel.datetime_class = DateTime
57

@@ -21,6 +23,10 @@ def self.run_migrations database_connection
2123
Sequel::TimestampMigrator.new(database_connection, PactBroker::DB::MIGRATIONS_DIR).run
2224
end
2325

26+
def self.run_data_migrations database_connection
27+
PactBroker::DB::MigrateData.(connection)
28+
end
29+
2430
def self.validate_connection_config
2531
PactBroker::DB::ValidateEncoding.(connection)
2632
end

lib/pact_broker/db/migrate_data.rb

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module PactBroker
2+
module DB
3+
class MigrateData
4+
def self.call database_connection, options = {}
5+
6+
end
7+
end
8+
end
9+
end

0 commit comments

Comments
 (0)