summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb')
-rw-r--r--lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb b/lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb
index 5569bac0e19..e7a68b183b8 100644
--- a/lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb
+++ b/lib/gitlab/background_migration/batching_strategies/primary_key_batching_strategy.rb
@@ -23,6 +23,7 @@ module Gitlab
quoted_column_name = model_class.connection.quote_column_name(column_name)
relation = model_class.where("#{quoted_column_name} >= ?", batch_min_value)
+ relation = apply_additional_filters(relation, job_arguments: job_arguments)
next_batch_bounds = nil
relation.each_batch(of: batch_size, column: column_name) do |batch| # rubocop:disable Lint/UnreachableLoop
@@ -33,6 +34,22 @@ module Gitlab
next_batch_bounds
end
+
+ # Strategies based on PrimaryKeyBatchingStrategy can use
+ # this method to easily apply additional filters.
+ #
+ # Example:
+ #
+ # class MatchingType < PrimaryKeyBatchingStrategy
+ # def apply_additional_filters(relation, job_arguments:)
+ # type = job_arguments.first
+ #
+ # relation.where(type: type)
+ # end
+ # end
+ def apply_additional_filters(relation, job_arguments: [])
+ relation
+ end
end
end
end