Sha256: 1c7228550b85a4b8ceceb4833d49756cd6ee696c112c0772a17f37f969762e96

Contents?: true

Size: 1.22 KB

Versions: 10

Compression:

Stored size: 1.22 KB

Contents

module AbstractImporter
  module Strategies
    class Base
      attr_reader :collection

      delegate :summary,
               :remap_foreign_keys!,
               :redundant_record?,
               :invoke_callback,
               :use_id_map_for?,
               :dry_run?,
               :id_map,
               :scope,
               :reporter,
               :association_attrs,
               :generate_id,
               to: :collection

      def initialize(collection, options={})
        @collection = collection
        @remap_ids = options.fetch(:id_map, use_id_map_for?(collection))
      end

      def remap_ids?
        @remap_ids
      end

      def process_record(hash)
        raise NotImplementedError
      end

      def already_imported?(hash)
        id_map.contains? collection.table_name, hash[:id]
      end

      def flush
      end

      def prepare_attributes(hash)
        hash = invoke_callback(:before_build, hash) || hash

        if remap_ids?
          hash = hash.merge(legacy_id: hash.delete(:id))
          if generate_id
            hash[:id] = generate_id.arity.zero? ? generate_id.call : generate_id.call(hash)
          end
        end

        hash.merge(association_attrs)
      end

    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
abstract_importer-1.9.0 lib/abstract_importer/strategies/base.rb
abstract_importer-1.8.0 lib/abstract_importer/strategies/base.rb
abstract_importer-1.7.0 lib/abstract_importer/strategies/base.rb
abstract_importer-1.6.0 lib/abstract_importer/strategies/base.rb
abstract_importer-1.5.6 lib/abstract_importer/strategies/base.rb
abstract_importer-1.5.5 lib/abstract_importer/strategies/base.rb
abstract_importer-1.5.4 lib/abstract_importer/strategies/base.rb
abstract_importer-1.5.3 lib/abstract_importer/strategies/base.rb
abstract_importer-1.5.2 lib/abstract_importer/strategies/base.rb
abstract_importer-1.5.1 lib/abstract_importer/strategies/base.rb