Class: BulkImports::Projects::Pipelines::ReferencesPipeline

Inherits:
Object
  • Object
show all
Includes:
BulkImports::Pipeline
Defined in:
lib/bulk_imports/projects/pipelines/references_pipeline.rb

Constant Summary collapse

BATCH_SIZE =
100

Constants included from BulkImports::Pipeline

BulkImports::Pipeline::CACHE_KEY_EXPIRATION, BulkImports::Pipeline::EMPTY_EXPORT_STATUS_TIMEOUT, BulkImports::Pipeline::ExpiredError, BulkImports::Pipeline::FailedError, BulkImports::Pipeline::NDJSON_EXPORT_TIMEOUT, BulkImports::Pipeline::NotAllowedError

Constants included from BulkImports::Pipeline::Runner

BulkImports::Pipeline::Runner::MarkedAsFailedError

Instance Method Summary collapse

Methods included from BulkImports::Pipeline

#current_user, #import_export_config, #initialize, #portable, #tracker

Methods included from BulkImports::Pipeline::Runner

#run

Instance Method Details

#extract(_context) ⇒ Object



11
12
13
14
15
16
17
18
19
20
# File 'lib/bulk_imports/projects/pipelines/references_pipeline.rb', line 11

def extract(_context)
  data = Enumerator.new do |enum|
    add_matching_objects(portable.issues, enum)
    add_matching_objects(portable.merge_requests, enum)
    add_notes(portable.issues, enum)
    add_notes(portable.merge_requests, enum)
  end

  BulkImports::Pipeline::ExtractedData.new(data: data)
end

#load(_context, object) ⇒ Object



36
37
38
# File 'lib/bulk_imports/projects/pipelines/references_pipeline.rb', line 36

def load(_context, object)
  object.save! if object_body_changed?(object)
end

#transform(_context, object) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/bulk_imports/projects/pipelines/references_pipeline.rb', line 22

def transform(_context, object)
  body = object_body(object).dup

  body.gsub!(username_regex(mapped_usernames), mapped_usernames)

  matching_urls(object).each do |old_url, new_url|
    body.gsub!(old_url, new_url) if body.include?(old_url)
  end

  object.assign_attributes(body_field(object) => body)

  object
end