Sha256: 4a43dad7905fa3f5970734b4d06ff20384c6464571359477855235f9d3d5d07c

Contents?: true

Size: 1.17 KB

Versions: 2

Compression:

Stored size: 1.17 KB

Contents

module Chronicle
  module ETL
    # Abstract class representing an Transformer for an ETL job
    class Transformer
      extend Chronicle::ETL::Catalog

      # Construct a new instance of this transformer. Options are passed in from a Runner
      # == Paramters:
      # options::
      #   Options for configuring this Transformer
      def initialize(options = {}, data)
        @options = options
        @data = data
      end

      # The main entrypoint for transforming a record. Called by a Runner on each extracted record
      def transform
        raise NotImplementedError
      end

      # The domain or provider-specific id of the record this transformer is working on.
      # Used for building a cursor so an extractor doesn't have to start from the beginning of a
      # data source from the beginning.
      def id; end

      # The domain or provider-specific timestamp of the record this transformer is working on.
      # Used for building a cursor so an extractor doesn't have to start from the beginning of a
      # data source from the beginning.
      def timestamp; end
    end
  end
end

require_relative 'json_transformer'
require_relative 'null_transformer'

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
chronicle-etl-0.2.3 lib/chronicle/etl/transformers/transformer.rb
chronicle-etl-0.2.2 lib/chronicle/etl/transformers/transformer.rb