Sha256: 1f83c269157c8cb540134bf6a2e10b10456d95c031f43145e0117cb173518df4

Contents?: true

Size: 1007 Bytes

Versions: 37

Compression:

Stored size: 1007 Bytes

Contents

require 'arc-furnace/node'

module ArcFurnace
  class Hash < Node
    attr_reader :key_column
    private_attr_reader :source, :hash

    def initialize(source: , key_column:)
      @source = source
      @key_column = key_column
      @hash = {}
    end

    # Pass a block that accepts two argument, the join key
    # for each value and the value
    def each(&block)
      hash.each(&block)
    end

    # Called at the end of processing all rows; do any clean-up or state saving here.
    def finalize

    end

    def prepare
      loop do
        break if source.empty?
        row = source.row
        key = row[key_column]
        if key
          if hash.include?(key)
            error_handler.duplicate_primary_key(duplicate_row: row, key: key, node_id: node_id)
          end
          hash[key] = row
        else
          error_handler.missing_primary_key(source_row: row, node_id: node_id)
        end
      end
    end

    def get(primary_key)
      hash[primary_key]
    end

  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
arc-furnace-0.1.42 lib/arc-furnace/hash.rb
arc-furnace-0.1.41 lib/arc-furnace/hash.rb
arc-furnace-0.1.40 lib/arc-furnace/hash.rb
arc-furnace-0.1.39 lib/arc-furnace/hash.rb
arc-furnace-0.1.38 lib/arc-furnace/hash.rb
arc-furnace-0.1.37 lib/arc-furnace/hash.rb
arc-furnace-0.1.36 lib/arc-furnace/hash.rb
arc-furnace-0.1.35 lib/arc-furnace/hash.rb
arc-furnace-0.1.34 lib/arc-furnace/hash.rb
arc-furnace-0.1.33 lib/arc-furnace/hash.rb
arc-furnace-0.1.32 lib/arc-furnace/hash.rb
arc-furnace-0.1.31 lib/arc-furnace/hash.rb
arc-furnace-0.1.30 lib/arc-furnace/hash.rb
arc-furnace-0.1.29 lib/arc-furnace/hash.rb
arc-furnace-0.1.28 lib/arc-furnace/hash.rb
arc-furnace-0.1.27 lib/arc-furnace/hash.rb
arc-furnace-0.1.26 lib/arc-furnace/hash.rb
arc-furnace-0.1.25 lib/arc-furnace/hash.rb
arc-furnace-0.1.24 lib/arc-furnace/hash.rb
arc-furnace-0.1.23 lib/arc-furnace/hash.rb