Class: Gitlab::BackgroundMigration::MoveCiBuildsMetadata::JobsDefinitionsAssigner
- Inherits:
-
Object
- Object
- Gitlab::BackgroundMigration::MoveCiBuildsMetadata::JobsDefinitionsAssigner
- Defined in:
- lib/gitlab/background_migration/move_ci_builds_metadata.rb
Overview
This is the main migration point for the definitions. For each jobs it builds a new definition object in memory and passes them to the BulkJobDefinitionsCreator to transform them in persisted objects. We use global_identifier to correlate between the in memory objects and the database objects because each definition is unique by ‘project_id, partition_id, checksum` attributes, not only by checksum. After the definitions are persisted we also bulk inset the glue records in their separate table.
Instance Attribute Summary collapse
-
#jobs ⇒ Object
readonly
Returns the value of attribute jobs.
Instance Method Summary collapse
- #execute ⇒ Object
-
#initialize(migration, jobs) ⇒ JobsDefinitionsAssigner
constructor
A new instance of JobsDefinitionsAssigner.
Constructor Details
#initialize(migration, jobs) ⇒ JobsDefinitionsAssigner
Returns a new instance of JobsDefinitionsAssigner.
311 312 313 314 |
# File 'lib/gitlab/background_migration/move_ci_builds_metadata.rb', line 311 def initialize(migration, jobs) @migration = migration @jobs = jobs end |
Instance Attribute Details
#jobs ⇒ Object (readonly)
Returns the value of attribute jobs.
307 308 309 |
# File 'lib/gitlab/background_migration/move_ci_builds_metadata.rb', line 307 def jobs @jobs end |
Instance Method Details
#execute ⇒ Object
316 317 318 319 320 321 322 323 324 325 326 327 |
# File 'lib/gitlab/background_migration/move_ci_builds_metadata.rb', line 316 def execute definitions = jobs.map { |job| job.job_definition = definition_model.initialize_from(job) } persisted_definitions = bulk_persist_definitions(definitions) definition_instances_attrs = jobs.map do |job| job_definition = persisted_definitions.fetch(job.job_definition.global_identifier) job_definition_instance_attrs_for(job, job_definition) end definition_instance_model.insert_all(definition_instances_attrs, unique_by: [:job_id, :partition_id]) end |