diff options
Diffstat (limited to 'app/serializers/concerns/with_pagination.rb')
-rw-r--r-- | app/serializers/concerns/with_pagination.rb | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/app/serializers/concerns/with_pagination.rb b/app/serializers/concerns/with_pagination.rb new file mode 100644 index 00000000000..d29e22d6740 --- /dev/null +++ b/app/serializers/concerns/with_pagination.rb @@ -0,0 +1,22 @@ +module WithPagination + attr_accessor :paginator + + def with_pagination(request, response) + tap { self.paginator = Gitlab::Serializer::Pagination.new(request, response) } + end + + def paginated? + paginator.present? + end + + # super is `BaseSerializer#represent` here. + # + # we shouldn't try to paginate single resources + def represent(resource, opts = {}) + if paginated? && resource.respond_to?(:page) + super(@paginator.paginate(resource), opts) + else + super(resource, opts) + end + end +end |