Module: SlackRubyBotServer::Api::Helpers::SortHelpers
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/slack-ruby-bot-server/api/helpers/sort_helpers.rb
Instance Method Summary collapse
Instance Method Details
#route_sort ⇒ Object
34 35 36 |
# File 'lib/slack-ruby-bot-server/api/helpers/sort_helpers.rb', line 34 def route_sort (env['api.endpoint'].route_setting(:sort) || {})[:sort] end |
#sort(coll, options = {}) ⇒ Object
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/slack-ruby-bot-server/api/helpers/sort_helpers.rb', line 38 def sort(coll, = {}) sort_order = sort_order() unless sort_order.empty? if coll.respond_to?(:order) sort_order.each do |s| coll = coll.order(s[:column] => s[:direction]) end elsif coll.respond_to?(:asc) && coll.respond_to?(:desc) sort_order.each do |s| coll = coll.send(s[:direction], s[:column]) end else error!("Cannot sort #{coll.class.name}", 500) end end coll = coll.is_a?(Module) && coll.respond_to?(:all) ? coll.all : coll end |
#sort_order(options = {}) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/slack-ruby-bot-server/api/helpers/sort_helpers.rb', line 7 def sort_order( = {}) params[:sort] = [:default_sort_order] unless params[:sort] return [] unless params[:sort] sort_order = params[:sort].to_s unless [:default_sort_order] == sort_order supported_sort_orders = route_sort error!("This API doesn't support sorting", 400) if supported_sort_orders.blank? unless supported_sort_orders.include?(sort_order) error!("Invalid sort order: #{sort_order}, must be#{supported_sort_orders.count == 1 ? '' : ' one of'} '#{supported_sort_orders.join("', '")}'", 400) end end sort_order = sort_order.split(',').map do |sort_entry| sort_order = {} if sort_entry[0] == '-' sort_order[:direction] = :desc sort_order[:column] = sort_entry[1..-1] else sort_order[:direction] = :asc sort_order[:column] = sort_entry end error!("Invalid sort: #{sort_entry}", 400) if sort_order[:column].blank? sort_order end sort_order end |