class ResultCsvGenerator

Attributes

csv[RW]

Public Class Methods

new(result_id, headers, create_empty = false) click to toggle source
# File lib/result_csv_generator.rb, line 6
def initialize(result_id, headers, create_empty = false)
  @result_id = result_id
  @headers = headers
  @csv_service = CsvService.new(@result_id)

  if create_empty
    setup_csv.call()
    finish_csv.call(0)
  end
end

Public Instance Methods

callbacks() click to toggle source
# File lib/result_csv_generator.rb, line 17
def callbacks
  {
    before_execute: setup_csv,
    during_execute: ->(row, _row_count) { @csv << row },
    after_execute: finish_csv
  }
end
filepath() click to toggle source
# File lib/result_csv_generator.rb, line 25
def filepath
  @csv_service.filepath
end

Private Instance Methods

finish_csv() click to toggle source
# File lib/result_csv_generator.rb, line 38
def finish_csv
  lambda do |_row_count|
    @csv.close
    @csv_service.store!
    File.delete(filepath)
  end
end
setup_csv() click to toggle source
# File lib/result_csv_generator.rb, line 31
def setup_csv
  lambda do
    @csv = CSV.open(filepath, 'w')
    @csv << @headers
  end
end