summaryrefslogtreecommitdiff
path: root/lib/bitbucket_server/collection.rb
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2018-11-05 15:37:21 -0800
committerStan Hu <stanhu@gmail.com>2018-11-07 11:18:05 -0800
commiteb67fe85b50c75f4547df0d8f7681ac8da6d7ebe (patch)
treee5974761173345882632ab5fcc26e3c66da2bf33 /lib/bitbucket_server/collection.rb
parent4068d46078faaa97acbfbe33cc7663db6d1c831a (diff)
downloadgitlab-ce-eb67fe85b50c75f4547df0d8f7681ac8da6d7ebe.tar.gz
Paginate Bitbucket Server importer projectssh-paginate-bitbucket-server-imports
To prevent delays in loading the page and reduce memory usage, limit the number of projects shown at 25 per page. Part of https://gitlab.com/gitlab-org/gitlab-ce/issues/50021
Diffstat (limited to 'lib/bitbucket_server/collection.rb')
-rw-r--r--lib/bitbucket_server/collection.rb24
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/bitbucket_server/collection.rb b/lib/bitbucket_server/collection.rb
index b50c5dde352..7e4b2277bbe 100644
--- a/lib/bitbucket_server/collection.rb
+++ b/lib/bitbucket_server/collection.rb
@@ -2,7 +2,13 @@
module BitbucketServer
class Collection < Enumerator
+ attr_reader :paginator
+
+ delegate :page_offset, :has_next_page?, to: :paginator
+
def initialize(paginator)
+ @paginator = paginator
+
super() do |yielder|
loop do
paginator.items.each { |item| yielder << item }
@@ -12,6 +18,24 @@ module BitbucketServer
lazy
end
+ def current_page
+ return 1 if page_offset <= 1
+
+ [1, page_offset].max
+ end
+
+ def prev_page
+ return nil unless current_page > 1
+
+ current_page - 1
+ end
+
+ def next_page
+ return nil unless has_next_page?
+
+ current_page + 1
+ end
+
def method_missing(method, *args)
return super unless self.respond_to?(method)