Class: Trailblazer::Finder::Activities::PreparePaging

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

Instance Method Summary collapse

Instance Method Details

#check_paging(_ctx, config:) ⇒ Object



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

def check_paging(_ctx, config:, **)
  paging = config.paging
  return false if config.paging.empty? || paging.nil?

  true
end

#clear_paging(ctx) ⇒ Object



25
26
27
28
# File 'lib/trailblazer/finder/activities/prepare_paging.rb', line 25

def clear_paging(ctx, **)
  ctx[:params].delete(:page) unless ctx[:params][:page].nil?
  true
end

#set_paging(ctx, config:) ⇒ Object



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

def set_paging(ctx, config:, **)
  ctx[:paging] = config.paging
  ctx[:paging][:current_page] = ctx.dig(:params, :page) || 1
  return true unless ctx[:params][:per_page]

  ctx[:paging][:per_page] = ctx[:params][:per_page].to_i || ctx[:paging][:per_page]
  ctx[:paging][:per_page] = ctx[:paging][:max_per_page] if ctx[:paging][:per_page] > ctx[:paging][:max_per_page]
  ctx[:paging][:per_page] = ctx[:paging][:min_per_page] if ctx[:paging][:per_page] < ctx[:paging][:min_per_page]
  true
end