summaryrefslogtreecommitdiff
path: root/app/services/loose_foreign_keys/process_deleted_records_service.rb
diff options
context:
space:
mode:
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.rb33
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