Class: Hekenga::FailureReport

Inherits:
Object
  • Object
show all
Defined in:
lib/hekenga/failure_report.rb

Instance Method Summary collapse

Constructor Details

#initialize(migration) ⇒ FailureReport

Returns a new instance of FailureReport.



3
4
5
# File 'lib/hekenga/failure_report.rb', line 3

def initialize(migration)
  @migration = migration
end

Instance Method Details

#print!Object



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/hekenga/failure_report.rb', line 36

def print!
  Hekenga.log("Failures for #{@migration.to_key}")

  summaries = tasks
  if summaries.empty?
    Hekenga.log("  No failed or invalid documents.")
    return
  end

  failed_ids  = summaries.flat_map { |summary| summary[:failed_ids] }
  invalid_ids = summaries.flat_map { |summary| summary[:invalid_ids] }

  print_ids("Failed",  failed_ids)
  print_ids("Invalid", invalid_ids)
end

#tasksObject

Per-task summaries for document tasks that have any failed or invalid document IDs. => [{ idx:, description:, failed_ids: [...], invalid_ids: [...] }, ...]



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/hekenga/failure_report.rb', line 10

def tasks
  @migration.tasks.each.with_index.filter_map do |task, idx|
    next unless task.is_a?(Hekenga::DocumentTask)

    records = @migration.task_records(idx).any_of(
      { :failed_ids.ne  => [] },
      { :invalid_ids.ne => [] }
    )

    failed_ids  = []
    invalid_ids = []
    records.pluck(:failed_ids, :invalid_ids).each do |failed, invalid|
      failed_ids.concat(failed)   if failed
      invalid_ids.concat(invalid) if invalid
    end
    next if failed_ids.empty? && invalid_ids.empty?

    {
      idx:         idx,
      description: task.description,
      failed_ids:  failed_ids,
      invalid_ids: invalid_ids
    }
  end
end