Sha256: de2d14f46bf73b4f25be932403edc3940b52dc977bc3049746da6625f6fec281

Contents?: true

Size: 735 Bytes

Versions: 1

Compression:

Stored size: 735 Bytes

Contents

# frozen_string_literal: true

module Chronicle
  module ETL
    class SortTransformer < Chronicle::ETL::Transformer
      register_connector do |r|
        r.identifier = :sort
        r.description = 'sorts records by a given field'
      end

      setting :key, required: true, default: 'id'
      setting :direction, required: false, default: 'desc'

      def transform(record)
        stash_record(record)
      end

      def finish
        return unless @stashed_records&.any?

        sorted = @stashed_records.sort_by do |record|
          value = record.data[@config.key]
          value.nil? ? [1] : [0, value]
        end

        sorted.reverse! if @config.direction == 'desc'
        sorted
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chronicle-etl-0.6.1 lib/chronicle/etl/transformers/sort_transformer.rb