Sha256: e9b33aac4e73a9c88224aa8a1f87476320a02cde95b3e073a821af8c2ef22e97

Contents?: true

Size: 732 Bytes

Versions: 9

Compression:

Stored size: 732 Bytes

Contents

require 'might/ransackable_sort_parameters_adapter'
require 'might/ransackable_sort'
require 'might/sort_parameters_extractor'
require 'middleware'

module Might
  # Sort scope using ransack gem
  #
  class SortMiddleware
    # @param app [#call]
    #
    def initialize(app)
      @app = app
    end

    attr_reader :app

    # @param [Array(ActiveRecord::Relation, Hash)] env
    # First argument is a ActiveRecord relation which must be sorted
    # Second argument is a request parameters provided by user
    #
    def call(env)
      scope, = ::Middleware::Builder.new do |b|
        b.use RansackableSortParametersAdapter
        b.use RansackableSort
      end.call(env)

      app.call([scope, env[1]])
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
might-0.7.1 lib/might/sort_middleware.rb
might-0.7.0 lib/might/sort_middleware.rb
might-0.6.0 lib/might/sort_middleware.rb
might-0.5.2 lib/might/sort_middleware.rb
might-0.5.1 lib/might/sort_middleware.rb
might-0.5.0 lib/might/sort_middleware.rb
might-0.4.0 lib/might/sort_middleware.rb
might-0.3.1 lib/might/sort_middleware.rb
might-0.3.0 lib/might/sort_middleware.rb