Class: Philiprehberger::Batch::Result

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/philiprehberger/batch/result.rb

Overview

Holds the outcome of a batch processing run.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(processed:, errors:, total:, chunks:, elapsed:, halted: false, results: []) ⇒ Result

Returns a new instance of Result.

Parameters:

  • processed (Integer)

    successfully processed count

  • errors (Array<Hash>)

    error entries

  • total (Integer)

    total item count

  • chunks (Integer)

    number of chunks

  • elapsed (Float)

    elapsed time

  • halted (Boolean) (defaults to: false)

    whether processing was halted early

  • results (Array) (defaults to: [])

    collected results from processing



34
35
36
37
38
39
40
41
42
# File 'lib/philiprehberger/batch/result.rb', line 34

def initialize(processed:, errors:, total:, chunks:, elapsed:, halted: false, results: [])
  @processed = processed
  @errors = errors
  @total = total
  @chunks = chunks
  @elapsed = elapsed
  @halted = halted
  @results = results
end

Instance Attribute Details

#chunksInteger (readonly)

Returns number of chunks processed.

Returns:

  • (Integer)

    number of chunks processed



19
20
21
# File 'lib/philiprehberger/batch/result.rb', line 19

def chunks
  @chunks
end

#elapsedFloat (readonly)

Returns elapsed time in seconds.

Returns:

  • (Float)

    elapsed time in seconds



22
23
24
# File 'lib/philiprehberger/batch/result.rb', line 22

def elapsed
  @elapsed
end

#errorsArray<Hash> (readonly)

Returns errors with :item and :error keys.

Returns:

  • (Array<Hash>)

    errors with :item and :error keys



13
14
15
# File 'lib/philiprehberger/batch/result.rb', line 13

def errors
  @errors
end

#processedInteger (readonly)

Returns number of items processed successfully.

Returns:

  • (Integer)

    number of items processed successfully



10
11
12
# File 'lib/philiprehberger/batch/result.rb', line 10

def processed
  @processed
end

#resultsArray (readonly)

Returns results collected from each processed item.

Returns:

  • (Array)

    results collected from each processed item



25
26
27
# File 'lib/philiprehberger/batch/result.rb', line 25

def results
  @results
end

#totalInteger (readonly)

Returns total number of items.

Returns:

  • (Integer)

    total number of items



16
17
18
# File 'lib/philiprehberger/batch/result.rb', line 16

def total
  @total
end

Instance Method Details

#countsHash

Count occurrences of each result value.

Returns:

  • (Hash)

    counts keyed by result value



77
78
79
# File 'lib/philiprehberger/batch/result.rb', line 77

def counts
  @results.tally
end

#each {|item_result| ... } ⇒ Enumerator

Iterate over all collected item results.

Yields:

  • (item_result)

    each result value

Returns:

  • (Enumerator)

    if no block given



62
63
64
# File 'lib/philiprehberger/batch/result.rb', line 62

def each(&)
  @results.each(&)
end

#flat_map {|item_result| ... } ⇒ Array

Map over all collected item results and flatten one level.

Yields:

  • (item_result)

    each result value

Returns:

  • (Array)

    flattened mapped results



70
71
72
# File 'lib/philiprehberger/batch/result.rb', line 70

def flat_map(&)
  @results.flat_map(&)
end

#group_by {|item_result| ... } ⇒ Hash

Group results by the return value of the block.

Yields:

  • (item_result)

    each result value

Returns:

  • (Hash)

    grouped results



85
86
87
# File 'lib/philiprehberger/batch/result.rb', line 85

def group_by(&)
  @results.group_by(&)
end

#halted?Boolean

Check if processing was halted early by an error handler returning :halt.

Returns:

  • (Boolean)


54
55
56
# File 'lib/philiprehberger/batch/result.rb', line 54

def halted?
  @halted
end

#success?Boolean

Check if all items were processed without errors.

Returns:

  • (Boolean)


47
48
49
# File 'lib/philiprehberger/batch/result.rb', line 47

def success?
  @errors.empty?
end