class RSpec::Hive::QueryBuilder::RowTransformer
Constants
- HIVE_NIL
Attributes
schema[R]
strategy[R]
Public Class Methods
new(schema, missing_column_strategy)
click to toggle source
# File lib/rspec/hive/query_builder/row_transformer.rb, line 9 def initialize(schema, missing_column_strategy) @schema = schema @strategy = missing_column_strategy end
Public Instance Methods
transform(row)
click to toggle source
# File lib/rspec/hive/query_builder/row_transformer.rb, line 14 def transform(row) if row.respond_to?(:each_pair) mock_hive_row(row) elsif row.respond_to?(:each) array_row(row) else raise ArgumentError, 'Array or Hash required!' end end
Private Instance Methods
array_row(row)
click to toggle source
# File lib/rspec/hive/query_builder/row_transformer.rb, line 30 def array_row(row) size = schema.columns.size missing = size - row.size if missing.positive? row_with_missing_columns(row) else row end end
mock_hive_row(partial_row)
click to toggle source
# File lib/rspec/hive/query_builder/row_transformer.rb, line 50 def mock_hive_row(partial_row) symbolized_row = Hash[partial_row.map { |k, v| [k.to_sym, v] }] schema.columns.map do |column| value = symbolized_row.fetch(column.name.to_sym) { strategy.missing(column) } nil_to_null(value) end end
nil_to_null(value)
click to toggle source
# File lib/rspec/hive/query_builder/row_transformer.rb, line 59 def nil_to_null(value) value.nil? ? HIVE_NIL : value end
row_with_missing_columns(row)
click to toggle source
# File lib/rspec/hive/query_builder/row_transformer.rb, line 40 def row_with_missing_columns(row) schema.columns.map.with_index do |column, index| if index > row.size strategy.missing(column) else row[index] end end end