Sha256: 8a0b67b8a40d3f4027755edb5f2cd88ce771dffcaf03d5f93e6c071772990447

Contents?: true

Size: 1.31 KB

Versions: 9

Compression:

Stored size: 1.31 KB

Contents

require "roar/decorator"
require "roar/json/hal"

module PactBroker
  module Api
    module Decorators
      module PaginationLinks
        include Roar::JSON::HAL
        include Roar::JSON::HAL::Links

        property :page, getter: lambda { |represented:, **|
          if represented.respond_to?(:current_page)
            {
              number: represented.current_page,
              size: represented.page_size,
              totalElements: represented.pagination_record_count,
              totalPages: represented.page_count,
            }
          end
        }

        link :next do | context |
          if represented.respond_to?(:current_page) &&
              represented.respond_to?(:page_count) &&
              represented.current_page < represented.page_count
            {
              href: context[:resource_url] + "?size=#{represented.page_size}&page=#{represented.current_page + 1}",
              title: "Next page"
            }

          end
        end

        link :previous do | context |
          if represented.respond_to?(:first_page?) && !represented.first_page?
            {
              href: context[:resource_url] + "?size=#{represented.page_size}&page=#{represented.current_page - 1}",
              title: "Previous page"
            }
          end
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
pact_broker-2.114.0 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.113.2 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.113.1 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.113.0 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.112.0 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.111.0 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.109.1 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.109.0 lib/pact_broker/api/decorators/pagination_links.rb
pact_broker-2.108.0 lib/pact_broker/api/decorators/pagination_links.rb