Sha256: 670ff0b423904218fe6fd6fcc9ad2e8117c63dd164273d7ef56e3b0c79e94295

Contents?: true

Size: 909 Bytes

Versions: 1

Compression:

Stored size: 909 Bytes

Contents

module InstDataShipper
  module DataSources
    # This module contains the logic for processing local AR tables
    module LocalTables
      extend ActiveSupport::Concern

      public

      def import_local_table(*args, **kwargs)
        delayed(:_import_local_table, *args, **kwargs)
      end

      private

      def _import_local_table(table_name)
        table_def = table_schemas.find { |t| t[:model].to_s == table_name }
        model = table_def[:model]

        inner_block = ->(file) {
          query = model
          query = query.includes(table_def[:includes]) if table_def[:includes].present?
          model.find_each do |m|
            file << table_def[:columns].map do |c|
              c[:transformer].present? ? m.instance_exec(&c[:transformer]) : m[c[:local_name].to_s]
            end
          end
        }

        upload_data(table_def, &inner_block)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
inst_data_shipper-0.1.0.beta1 lib/inst_data_shipper/data_sources/local_tables.rb