diff options
Diffstat (limited to 'app/controllers/admin/background_migrations_controller.rb')
-rw-r--r-- | app/controllers/admin/background_migrations_controller.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/controllers/admin/background_migrations_controller.rb b/app/controllers/admin/background_migrations_controller.rb index 42b89a3317e..c6c9e0ced22 100644 --- a/app/controllers/admin/background_migrations_controller.rb +++ b/app/controllers/admin/background_migrations_controller.rb @@ -2,6 +2,9 @@ class Admin::BackgroundMigrationsController < Admin::ApplicationController feature_category :database + urgency :low + + around_action :support_multiple_databases def index @relations_by_tab = { @@ -13,6 +16,13 @@ class Admin::BackgroundMigrationsController < Admin::ApplicationController @current_tab = @relations_by_tab.key?(params[:tab]) ? params[:tab] : 'queued' @migrations = @relations_by_tab[@current_tab].page(params[:page]) @successful_rows_counts = batched_migration_class.successful_rows_counts(@migrations.map(&:id)) + @databases = Gitlab::Database.db_config_names + end + + def show + @migration = batched_migration_class.find(params[:id]) + + @failed_jobs = @migration.batched_jobs.with_status(:failed).page(params[:page]) end def pause @@ -38,6 +48,18 @@ class Admin::BackgroundMigrationsController < Admin::ApplicationController private + def support_multiple_databases + Gitlab::Database::SharedModel.using_connection(base_model.connection) do + yield + end + end + + def base_model + @selected_database = params[:database] || Gitlab::Database::MAIN_DATABASE_NAME + + Gitlab::Database.database_base_models[@selected_database] + end + def batched_migration_class @batched_migration_class ||= Gitlab::Database::BackgroundMigration::BatchedMigration end |