diff options
Diffstat (limited to 'app/services/loose_foreign_keys/process_deleted_records_service.rb')
-rw-r--r-- | app/services/loose_foreign_keys/process_deleted_records_service.rb | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/app/services/loose_foreign_keys/process_deleted_records_service.rb b/app/services/loose_foreign_keys/process_deleted_records_service.rb index 735fc8a2415..025829aa774 100644 --- a/app/services/loose_foreign_keys/process_deleted_records_service.rb +++ b/app/services/loose_foreign_keys/process_deleted_records_service.rb @@ -21,13 +21,16 @@ module LooseForeignKeys break if modification_tracker.over_limit? - model = find_parent_model!(table) + loose_foreign_key_definitions = Gitlab::Database::LooseForeignKeys.definitions_by_table[table] + + next if loose_foreign_key_definitions.empty? LooseForeignKeys::BatchCleanerService - .new(parent_klass: model, - deleted_parent_records: records, - modification_tracker: modification_tracker, - models_by_table_name: models_by_table_name) + .new( + parent_table: table, + loose_foreign_key_definitions: loose_foreign_key_definitions, + deleted_parent_records: records, + modification_tracker: modification_tracker) .execute break if modification_tracker.over_limit? @@ -45,30 +48,12 @@ module LooseForeignKeys LooseForeignKeys::DeletedRecord.load_batch_for_table(fully_qualified_table_name, BATCH_SIZE) end - def find_parent_model!(table) - models_by_table_name.fetch(table) - end - def current_schema @current_schema = connection.current_schema end def tracked_tables - @tracked_tables ||= models_by_table_name - .select { |table_name, model| model.respond_to?(:loose_foreign_key_definitions) } - .keys - end - - def models_by_table_name - @models_by_table_name ||= begin - all_models - .select(&:base_class?) - .index_by(&:table_name) - end - end - - def all_models - ApplicationRecord.descendants + @tracked_tables ||= Gitlab::Database::LooseForeignKeys.definitions_by_table.keys end end end |