class Chronicle::ETL::CsvExtractor

Constants

DEFAULT_OPTIONS

Public Class Methods

new(options = {}) click to toggle source
Calls superclass method Chronicle::ETL::Extractor::new
# File lib/chronicle/etl/extractors/csv_extractor.rb, line 8
def initialize(options = {})
  super(DEFAULT_OPTIONS.merge(options))
end

Public Instance Methods

extract() { |result| ... } click to toggle source
# File lib/chronicle/etl/extractors/csv_extractor.rb, line 12
def extract
  csv = initialize_csv
  csv.each do |row|
    result = row.to_h
    yield result
  end
end
results_count() click to toggle source
# File lib/chronicle/etl/extractors/csv_extractor.rb, line 20
def results_count
  CSV.read(@options[:filename], headers: @options[:headers]).count if read_from_file?
end

Private Instance Methods

initialize_csv() click to toggle source
# File lib/chronicle/etl/extractors/csv_extractor.rb, line 26
def initialize_csv
  headers = @options[:headers].is_a?(String) ? @options[:headers].split(',') : @options[:headers]

  csv_options = {
    headers: headers,
    converters: :all
  }

  stream = read_from_file? ? File.open(@options[:filename]) : @options[:filename]
  CSV.new(stream, **csv_options)
end
read_from_file?() click to toggle source
# File lib/chronicle/etl/extractors/csv_extractor.rb, line 38
def read_from_file?
  @options[:filename] != $stdin
end