diff options
Diffstat (limited to 'rubocop/batched_background_migrations_dictionary.rb')
-rw-r--r-- | rubocop/batched_background_migrations_dictionary.rb | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/rubocop/batched_background_migrations_dictionary.rb b/rubocop/batched_background_migrations_dictionary.rb new file mode 100644 index 00000000000..286f0a57bad --- /dev/null +++ b/rubocop/batched_background_migrations_dictionary.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +module RuboCop + class BatchedBackgroundMigrationsDictionary + DICTIONARY_BASE_DIR = 'db/docs/batched_background_migrations' + + attr_reader :queued_migration_version + + class << self + def dictionary_data + @dictionary_data ||= Dir.glob("*.yml", base: DICTIONARY_BASE_DIR).each_with_object({}) do |file_name, data| + dictionary = YAML.load_file(File.join(DICTIONARY_BASE_DIR, file_name)) + + next unless dictionary['queued_migration_version'].present? + + data[dictionary['queued_migration_version'].to_s] = { + introduced_by_url: dictionary['introduced_by_url'], + finalize_after: dictionary['finalize_after'], + finalized_by: dictionary['finalized_by'].to_s + } + end + end + end + + def initialize(queued_migration_version) + @queued_migration_version = queued_migration_version + end + + def finalized_by + dictionary_data&.dig(:finalized_by) + end + + def finalize_after + dictionary_data&.dig(:finalize_after) + end + + def introduced_by_url + dictionary_data&.dig(:introduced_by_url) + end + + private + + def dictionary_data + @dictionary_data ||= self.class.dictionary_data[queued_migration_version.to_s] + end + end +end |