class DashOverlord::UseCases::V1::Shared::SearchAndPaginate::ApplyPagination

Constants

PAGE_DEFAULT
PER_PAGE_DEFAULT

Public Instance Methods

perform() click to toggle source
# File lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_pagination.rb, line 16
def perform
  context.page = fix_page(page)
  context.per_page = fix_per_page(per_page)

  page == 0 ? no_pagination : apply_pagination
end

Protected Instance Methods

apply_pagination() click to toggle source
# File lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_pagination.rb, line 31
def apply_pagination
  context.resources = paginated_resources.page(page).per(per_page)

  context.page = resources.current_page
end
fix_page(page) click to toggle source
# File lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_pagination.rb, line 37
def fix_page(page)
  page_or_nil = page.class == String ? page.presence : page

  (page_or_nil || PAGE_DEFAULT).to_i
end
fix_per_page(per_page) click to toggle source
# File lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_pagination.rb, line 43
def fix_per_page(per_page)
  per_page_or_nil = \
    per_page.class == String ? per_page.presence : per_page

  (per_page_or_nil || PER_PAGE_DEFAULT).to_i
end
no_pagination() click to toggle source
# File lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_pagination.rb, line 25
def no_pagination
  context.per_page = 0
  context.total_pages = 0
  context.total_results = resources.count
end

Private Instance Methods

paginated_resources() click to toggle source
# File lib/dash_overlord/use_cases/v1/shared/search_and_paginate/apply_pagination.rb, line 52
def paginated_resources
  if resources.respond_to?(:page)
    resources
  else
    Kaminari.paginate_array(resources)
  end
end