class Trailblazer::Finder::Activities::PrepareSorting

Public Instance Methods

check_sorting(ctx, **) click to toggle source
# File lib/trailblazer/finder/activities/prepare_sorting.rb, line 7
def check_sorting(ctx, **)
  sorting = ctx[:config][:sorting] || nil
  return true unless ctx[:config][:sorting].empty? || sorting.nil?
end
clear_sorting(ctx, **) click to toggle source
# File lib/trailblazer/finder/activities/prepare_sorting.rb, line 35
def clear_sorting(ctx, **)
  ctx[:params].delete(:sort) unless ctx[:params][:sort].nil?
  true
end
fetch_sort_direction(config_direction, params_direction = nil) click to toggle source
# File lib/trailblazer/finder/activities/prepare_sorting.rb, line 24
def fetch_sort_direction(config_direction, params_direction = nil)
  return config_direction == :asc ? :asc : :desc if params_direction.nil?

  case params_direction
    when ":asc", :asc, "asc"
      :asc
    else
      :desc
  end
end
set_sorting(ctx, **) click to toggle source
# File lib/trailblazer/finder/activities/prepare_sorting.rb, line 12
def set_sorting(ctx, **)
  return true if ctx[:params][:sort].nil?

  sorting = ctx[:params][:sort]
  config = ctx[:config][:sorting]
  ctx[:sorting] = ctx[:sorting] || {}
  sorting.split(",").each do |sorter|
    spt = sorter.split
    ctx[:sorting][spt[0]] = fetch_sort_direction(config[spt[0].to_sym], spt[1]) if config.include?(spt[0].to_sym)
  end
end