47 std::size_t max_pages = (std::numeric_limits<std::size_t>::max)()) {
48 std::vector<typename Items::value_type> all;
50 std::unordered_set<std::string> seen;
51 for (std::size_t page = 0; page < max_pages; ++page) {
54 return std::unexpected(std::move(response.error()));
56 Items& batch = (*response).*items;
57 all.insert(all.end(), std::make_move_iterator(batch.begin()),
58 std::make_move_iterator(batch.end()));
60 if constexpr (
requires { response->cursor; }) {
68 if (!seen.insert(next).second) {
69 return std::unexpected(
72 cursor = std::move(next);
Result< std::vector< typename Items::value_type > > collect_pages(Fetch &&fetch, Items Response::*items, std::size_t max_pages=(std::numeric_limits< std::size_t >::max)())
Follows cursors through a list operation and collects every page's items.
Definition pagination.hpp:46