Sha256: 6fe00c81c3dff20308aeb531c999e15684774edc91267bfd761df6ed9b0c1543

Contents?: true

Size: 826 Bytes

Versions: 2

Compression:

Stored size: 826 Bytes

Contents

# frozen_string_literal: true

require_relative '../adapter_activerecord'
require_relative '../processor_base'
require_relative '../../helpers/throws'
require_relative './active_record_operation'

class ActiveSet
  class Processor::Sort < Processor::Base
    class ActiveRecordAdapter < Adapter::ActiveRecord
      def process
        return false unless @set.respond_to?(:to_sql)

        @instructions.reduce(@set.eager_load(@instructions.associations_hash)) do |set, instruction|
          ar_operation = ActiveRecordOperation.new(instruction, @set.klass)
          return false unless ar_operation.attribute_is_field?

          statement = set.merge(ar_operation.operation)

          return false if throws?(ActiveRecord::StatementInvalid) { statement.load }

          statement
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
activeset-0.6.5 lib/active_set/processor_sort/active_record_adapter.rb
activeset-0.6.4 lib/active_set/processor_sort/active_record_adapter.rb