Update AliasResolver to work with versions
What does this MR do and why?
Add alias_version to Import::SourceUserPlaceholderReference, so that when encountering old data, we can correctly map it to the new models/columns without any ambiguity due to changes in the schema.
MR acceptance checklist
Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
How to set up and validate locally
- Try with the current version:
ref = Import::SourceUserPlaceholderReference.new(model: "Note", alias_version: 1, user_reference_column: "author_id")
ref.aliased_model # => Note
ref.aliased_user_reference_column # => "author_id"
- Update
ALIASESin lib/import/placeholder_references/alias_resolver.rb with a few different settings.
For example, apply this patch:
diff --git a/lib/import/placeholder_references/alias_resolver.rb b/lib/import/placeholder_references/alias_resolver.rb
index f8569735c215..7f46c54a34d0 100644
--- a/lib/import/placeholder_references/alias_resolver.rb
+++ b/lib/import/placeholder_references/alias_resolver.rb
@@ -13,6 +13,10 @@ module AliasResolver
1 => {
model: Note,
columns: { "author_id" => "author_id" }
+ },
+ 2 => {
+ model: MergeRequest,
+ columns: { "author_id" => "user_id" }
}
},
"MergeRequest" => {
- Run the commands again to see how it changes with a different version
ref = Import::SourceUserPlaceholderReference.new(model: "Note", alias_version: 2, user_reference_column: "author_id")
ref.aliased_model # => MergeRequest
ref.aliased_user_reference_column # => "user_id"
Related to #478501 (closed)
Edited by Keeyan Nejad