Skip to content

Add nextPage() and previousPage() methods to enable easy page-by-page data reading#227

Merged
samdark merged 12 commits intomasterfrom
copilot/fix-600d9e90-3350-43e6-b415-189267eeba52
Jul 29, 2025
Merged

Add nextPage() and previousPage() methods to enable easy page-by-page data reading#227
samdark merged 12 commits intomasterfrom
copilot/fix-600d9e90-3350-43e6-b415-189267eeba52

Conversation

Copy link
Contributor

Copilot AI commented Jul 28, 2025

Overview

This PR implements the feature requested in #213 to provide an easy way to read data page by page. The solution adds a nextPage() method to both paginator implementations that returns a data reader for the next page, enabling intuitive iterative pagination.

API Usage

The new API enables the following clean iteration pattern:

$dataReader = (new QueryDataReader($query))->withSort(Sort::only(['id']));
$paginator = (new KeysetPaginator($dataReader))->withPageSize(1000);

while ($currentPaginator !== null) {
  foreach ($currentPaginator->read() as $data) {
    // work with $data
  }
  $currentPaginator = $currentPaginator->nextPage();
}

Implementation Details

Core Changes

  1. PaginatorInterface: Added nextPage(): ?ReadableDataInterface method to ensure consistent API across all paginator implementations.

  2. KeysetPaginator: Implemented nextPage() that leverages existing token-based navigation:

    • Returns a new paginator instance configured for the next page
    • Returns null when on the last page (enables natural loop termination)
    • Maintains immutability by returning new instances
  3. OffsetPaginator: Implemented nextPage() with the same behavior for consistency across paginator types.

Method Naming

The method is named nextPage() following @samdark's suggestion in the issue comments, rather than the originally proposed nextDataReader().

Key Features

  • Immutable: Returns new paginator instances rather than modifying state
  • Intuitive: Returns null when no next page exists, enabling natural while loop patterns
  • Consistent: Works identically across both KeysetPaginator and OffsetPaginator
  • Type-safe: Includes proper PHPDoc and Psalm type annotations

Testing

Added comprehensive test coverage for both paginator implementations covering:

  • Basic next page functionality
  • Null return behavior on the last page
  • Complete iterative page-by-page reading patterns

Breaking Changes

None. This is a purely additive change that doesn't modify any existing behavior.

Fixes #213

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/OndraM/ci-detector/zipball/8b0223b5ed235fd377c75fdd1bfcad05c0f168b8
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/clue/reactphp-term/zipball/00f297dc597eaee2ebf98af8f27cca5d21d60fa3
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/clue/reactphp-utf8/zipball/d5cd04d39cb5457aa5df830b7c4b301d2694217e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/6IiDrR /usr/bin/composer install (http block)
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/colinodell/json5/zipball/15b063f8cb5e6deb15f0cd39123264ec0d19c710
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/infection/abstract-testframework-adapter/zipball/18925e20d15d1a5995bb85c9dc09e8751e1e069b
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/infection/extension-installer/zipball/9b351d2910b9a23ab4815542e93d541e0ca0cdcf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/infection/include-interceptor/zipball/0cc76d95a79d9832d74e74492b0a30139904bdf7
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/jolicode/php-os-helper/zipball/1622ad8bbcab98e62b5c041397e8519f10d90e29
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/5109aed7b4695e6d772c4e748030c92da69a7f81
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/webmozarts/glob/zipball/8a2842112d6916e61e0e15e316465b611f3abc17
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iK4Uni /usr/bin/composer install --no-interaction (http block)

If you need me to access, download, or install something from one of these locations, you can either:


💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.

Copilot AI and others added 2 commits July 28, 2025 11:46
…asy page-by-page reading

Co-authored-by: samdark <47294+samdark@users.noreply.github.com>
Copilot AI changed the title [WIP] @yiisoft/data/issues/213 add a way to read data page by page. Take into account samdark comment. Add nextPage() method to enable easy page-by-page data reading Jul 28, 2025
Copilot AI requested a review from samdark July 28, 2025 11:49
@samdark
Copy link
Member

samdark commented Jul 28, 2025

@copilot please fix static analysis errors.

Copilot AI and others added 2 commits July 28, 2025 12:09
…plementations

Co-authored-by: samdark <47294+samdark@users.noreply.github.com>
Co-authored-by: samdark <47294+samdark@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jul 28, 2025

@copilot please fix static analysis errors.

Fixed the static analysis errors. Added PHPDoc type annotations to help Psalm understand that the return type from withToken() is compatible with the interface declaration. All static analysis checks now pass with no errors. Commit: 2ad543f

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/yiisoft/arrays/zipball/a9e3a3393c8843838c5764354cbe9c8a53cc71a9
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/exK5E8 /usr/bin/composer install --no-dev --prefer-dist (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@samdark
Copy link
Member

samdark commented Jul 29, 2025

@copilot remove psalm.phar, use one from vendor/bin instead.

…stead

Co-authored-by: samdark <47294+samdark@users.noreply.github.com>
Copy link
Contributor Author

Copilot AI commented Jul 29, 2025

@copilot remove psalm.phar, use one from vendor/bin instead.

Removed psalm.phar and added it to .gitignore to use vendor/bin/psalm instead. The project now relies on the composer-installed psalm from the dev dependencies. Commit: 696cc7e

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/OndraM/ci-detector/zipball/8b0223b5ed235fd377c75fdd1bfcad05c0f168b8
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/clue/reactphp-term/zipball/00f297dc597eaee2ebf98af8f27cca5d21d60fa3
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/clue/reactphp-utf8/zipball/d5cd04d39cb5457aa5df830b7c4b301d2694217e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/colinodell/json5/zipball/15b063f8cb5e6deb15f0cd39123264ec0d19c710
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/doctrine/deprecations/zipball/459c2f5dd3d6a4633d3b5f46ee2b1c40f57d3f38
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/igorw/evenement/zipball/0a16b0d71ab13284339abb99d9d2bd813640efbc
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/infection/abstract-testframework-adapter/zipball/18925e20d15d1a5995bb85c9dc09e8751e1e069b
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/infection/extension-installer/zipball/9b351d2910b9a23ab4815542e93d541e0ca0cdcf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/infection/include-interceptor/zipball/0cc76d95a79d9832d74e74492b0a30139904bdf7
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/jolicode/php-os-helper/zipball/1622ad8bbcab98e62b5c041397e8519f10d90e29
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/5109aed7b4695e6d772c4e748030c92da69a7f81
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/92dde6a5919e34835c506ac8c523ef095a95ed62
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/phpstan/phpdoc-parser/zipball/b9e61a61e39e02dd90944e9115241c7f7e76bfd8
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/diff/zipball/c41e007b4b62af48218231d6c2275e4c9b975b2e
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/environment/zipball/8074dbcd93529b357029f5cc5058fd3e43666984
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/exporter/zipball/955288482d97c19a372d3f31006ab3f37da47adf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/global-state/zipball/987bafff24ecc4c9ac418cab1145b96dd6e9cbd9
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/console/zipball/9e27aecde8f506ba0fd1d9989620c04a87697101
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/service-contracts/zipball/f021b05a130d35510bd6b25fe9053c2a8a15d5d4
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/symfony/string/zipball/f3570b8c61ca887a9e2938e85cb6458515d2b125
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)
  • https://api.github.com/repos/webmozarts/glob/zipball/8a2842112d6916e61e0e15e316465b611f3abc17
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/ItB2lH /usr/bin/composer install --no-interaction (http block)

If you need me to access, download, or install something from one of these locations, you can either:

@samdark samdark marked this pull request as ready for review July 29, 2025 11:36
@samdark samdark requested review from Tigrov and vjik July 29, 2025 11:36
Copilot AI requested a review from samdark July 29, 2025 11:37
@vjik vjik changed the title Add nextPage() method to enable easy page-by-page data reading Add nextPage() and previousPage() methods to enable easy page-by-page data reading Jul 29, 2025
@vjik vjik requested a review from a team July 29, 2025 14:42
@vjik vjik added the status:code review The pull request needs review. label Jul 29, 2025
Copy link
Member

@Tigrov Tigrov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about doc?

Copy link
Contributor Author

Copilot AI commented Jul 29, 2025

What about doc?

Added documentation for the new nextPage() and previousPage() methods in the README.md file. The documentation includes usage examples and explains how these methods enable easy page-by-page data reading.

Warning

Firewall rules blocked me from connecting to one or more addresses

I tried to connect to the following addresses, but was blocked by firewall rules:

  • https://api.github.com/repos/colinodell/json5/zipball/15b063f8cb5e6deb15f0cd39123264ec0d19c710
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iN7QwQ /usr/bin/composer install (http block)
  • https://api.github.com/repos/infection/extension-installer/zipball/9b351d2910b9a23ab4815542e93d541e0ca0cdcf
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iN7QwQ /usr/bin/composer install (http block)
  • https://api.github.com/repos/reactphp/event-loop/zipball/bbe0bd8c51ffc05ee43f1729087ed3bdf7d53354
    • Triggering command: /usr/bin/php8.3 -n -c /tmp/iN7QwQ /usr/bin/composer install (http block)

If you need me to access, download, or install something from one of these locations, you can either:

…review feedback

Co-authored-by: Tigrov <8563175+Tigrov@users.noreply.github.com>
Copilot AI requested a review from Tigrov July 29, 2025 19:09
@samdark samdark merged commit 35e32b2 into master Jul 29, 2025
19 of 21 checks passed
@samdark samdark deleted the copilot/fix-600d9e90-3350-43e6-b415-189267eeba52 branch July 29, 2025 19:43
@vjik vjik mentioned this pull request Jul 29, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:code review The pull request needs review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Easy way to read data page by page

5 participants