Class: Lcms::Engine::Pagination
- Inherits:
-
Object
- Object
- Lcms::Engine::Pagination
- Defined in:
- app/entities/lcms/engine/pagination.rb
Instance Method Summary collapse
-
#initialize(params) ⇒ Pagination
constructor
A new instance of Pagination.
- #params(strict: false) ⇒ Object
- #serialize(resources, serializer) ⇒ Object
Constructor Details
#initialize(params) ⇒ Pagination
Returns a new instance of Pagination.
6 7 8 |
# File 'app/entities/lcms/engine/pagination.rb', line 6 def initialize(params) @params = params end |
Instance Method Details
#params(strict: false) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'app/entities/lcms/engine/pagination.rb', line 10 def params(strict: false) @pagination_params ||= begin default_params = { page: 1, per_page: 20, order: :asc } expected_params = @params.slice(:page, :per_page, :order).symbolize_keys pagination = default_params.merge(expected_params) pagination[:page] = pagination[:page].to_i pagination[:per_page] = pagination[:per_page].to_i pagination[:order] = pagination[:order].to_sym raise StandardError unless pagination[:page].positive? raise StandardError unless pagination[:per_page].positive? raise StandardError unless i(asc desc).include? pagination[:order] pagination end strict ? @pagination_params.slice(:page, :per_page) : @pagination_params end |
#serialize(resources, serializer) ⇒ Object
29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'app/entities/lcms/engine/pagination.rb', line 29 def serialize(resources, serializer) = { root: :results } [:meta_key] = :pagination [:pagination] = { total_pages: resources.total_pages, current_page: resources.current_page, per_page: resources.per_page, order: params[:order], total_hits: resources.total_entries } [:each_serializer] = serializer ActiveModel::ArraySerializer.new(resources, ).as_json end |