class ReindeerETL::Transforms::ResponseStatus
Swap out old error codes with REP_CODE
, add new columns with error codes
Constants
- ERROR_CODES
- NO_CODE
- REP_CODE
What to replace a code with if one is found
- REP_COL_PREFIX
Public Class Methods
new(opts={})
click to toggle source
# File lib/reindeer-etl/transforms/response_status.rb, line 12 def initialize opts={} @except_cols = (opts[:except] || []).to_set end
Public Instance Methods
process(row)
click to toggle source
# File lib/reindeer-etl/transforms/response_status.rb, line 16 def process(row) row_keys = row.keys.to_set unless @except_cols.subset? row_keys x_cols = (@except_cols - row_keys).to_a raise ReindeerETL::Errors::RecordInvalid.new("Missing except keys: #{x_cols}") end oldrow = row.dup (row_keys - @except_cols).each do |k| new_col = "#{REP_COL_PREFIX}#{k.gsub('_','')}" if row_keys.include? new_col raise ReindeerETL::Errors::RecordInvalid.new("Column #{new_col} already exists") end val = row[k] if _has_code?(val) row[k] = REP_CODE ecode = val.to_s else ecode = NO_CODE end row[new_col] = "E#{ecode}E" end row end
Private Instance Methods
_has_code?(val)
click to toggle source
# File lib/reindeer-etl/transforms/response_status.rb, line 42 def _has_code? val ERROR_CODES.include?(val.to_s) end