Class: Trailblazer::Finder::Activities::PrepareSorting

Inherits:
Activity::Railway
  • Object
show all
Defined in:
lib/trailblazer/finder/activities/prepare_sorting.rb

Instance Method Summary collapse

Instance Method Details

#check_sorting(_ctx, config:) ⇒ Object



7
8
9
10
# File 'lib/trailblazer/finder/activities/prepare_sorting.rb', line 7

def check_sorting(_ctx, config:, **)
  sorting = config.sorting
  return true unless sorting.empty? || sorting.nil?
end

#clear_sorting(ctx) ⇒ Object



35
36
37
38
# 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) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# 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, config:) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
# File 'lib/trailblazer/finder/activities/prepare_sorting.rb', line 12

def set_sorting(ctx, config:, **)
  return true if ctx[:params][:sort].nil?

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