33 std::size_t max_pages = std::numeric_limits<std::size_t>::max()) {
34 std::vector<typename Items::value_type> all;
36 for (std::size_t page = 0; page < max_pages; ++page) {
39 return std::unexpected(std::move(response.error()));
41 Items& batch = (*response).*items;
42 all.insert(all.end(), std::make_move_iterator(batch.begin()),
43 std::make_move_iterator(batch.end()));
45 if constexpr (std::is_same_v<
decltype(response->cursor), std::optional<std::string>>) {
46 next = response->cursor.value_or(
"");
48 next = std::move(response->cursor);
54 return std::unexpected(
57 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:32