# frozen_string_literal: true

module Gitlab
  module Pagination
    class Base
      private

      def per_page
        @per_page ||= params[:per_page]
      end

      def base_request_uri
        @base_request_uri ||= URI.parse(request.url).tap do |uri|
          uri.host = Gitlab.config.gitlab.host
          uri.port = Gitlab.config.gitlab.port
        end
      end

      def build_page_url(query_params:)
        base_request_uri.tap do |uri|
          uri.query = query_params
        end.to_s
      end

      def page_href(next_page_params = {})
        query_params = params.merge(**next_page_params, per_page: per_page).to_query

        build_page_url(query_params: query_params)
      end
    end
  end
end