Sha256: 09bff9f63c1e038992a3c9499e2a9b1697bbc886b5e0356a55e4ebe003cf3ebf

Contents?: true

Size: 502 Bytes

Versions: 2

Compression:

Stored size: 502 Bytes

Contents

# frozen_string_literal: true

module Importeur
  class ETL
    def initialize(extractor:, transformer:, loader:)
      @extractor = extractor
      @transformer = transformer
      @loader = loader
    end

    def call
      extracted = extractor.call
      return if extracted.nil?
      transformed = extracted.lazy.flat_map do |entity|
        transformer.call(entity)
      end
      loader.call(transformed.lazy)
    end

    private

    attr_reader :extractor, :transformer, :loader
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
importeur-0.1.1 lib/importeur/etl.rb
importeur-0.1.0 lib/importeur/etl.rb