Module: Import::PlaceholderReferences::AliasResolver

Extended by:
AliasResolver
Included in:
AliasResolver
Defined in:
lib/import/placeholder_references/alias_resolver.rb

Constant Summary collapse

MissingAlias =
Class.new(StandardError)
DOCS_URL =
'https://docs.gitlab.com/development/user_contribution_mapping/#placeholder-reference-aliasing'
NOTE_COLUMNS =
{ "author_id" => "author_id", "updated_by_id" => "updated_by_id",
"resolved_by_id" => "resolved_by_id" }.freeze
NOTE_EXCLUSIONS =
%w[updated_by_id resolved_by_id].freeze

Instance Method Summary collapse

Instance Method Details

#aliased_column(model, column, version:) ⇒ Object



268
269
270
271
272
273
274
275
# File 'lib/import/placeholder_references/alias_resolver.rb', line 268

def aliased_column(model, column, version:)
  aliased_column = aliases.dig(model, version, :columns, column)
  return aliased_column if aliased_column.present?

  track_error_for_missing(model: model, column: column, version: version)

  column
end

#aliased_model(model, version:) ⇒ Object



259
260
261
262
263
264
265
266
# File 'lib/import/placeholder_references/alias_resolver.rb', line 259

def aliased_model(model, version:)
  aliased_model = aliases.dig(model, version, :model)
  return aliased_model if aliased_model.present?

  track_error_for_missing(model:, version:)

  model.safe_constantize || (raise missing_alias_error(model:, version:))
end

#aliasesObject



247
248
249
# File 'lib/import/placeholder_references/alias_resolver.rb', line 247

def aliases
  ALIASES
end

#models_with_dataObject



277
278
279
280
281
# File 'lib/import/placeholder_references/alias_resolver.rb', line 277

def models_with_data
  aliases.values
    .map { |versions| versions[versions.keys.max] }
    .map { |data| [data[:model], data] }
end

#version_for_model(model) ⇒ Object



251
252
253
254
255
256
257
# File 'lib/import/placeholder_references/alias_resolver.rb', line 251

def version_for_model(model)
  return aliases[model].keys.max if aliases[model]

  track_error_for_missing(model: model)

  1
end