gleetube/pagination
Types
A page of results with an optional next page token.
pub type Page(a) {
Page(items: List(a), next_page_token: option.Option(String))
}
Constructors
-
Page(items: List(a), next_page_token: option.Option(String))
Values
pub fn list_all(
fetch_page: fn(option.Option(String)) -> Result(
Page(a),
error.GleeTubeError,
),
) -> Result(List(a), error.GleeTubeError)
Fetch all pages by following next_page_token until exhausted.
The fetch_page function takes an optional page token and returns a Page.
Example
let fetch = fn(token) {
use resp <- result.try(channels.list(client,
parts: [Snippet], filter: ById(["UC..."]),
max_results: option.Some(50), page_token: token, hl: option.None,
))
Ok(pagination.Page(items: resp.items, next_page_token: resp.next_page_token))
}
let all_channels = pagination.list_all(fetch)
pub fn list_up_to(
fetch_page: fn(option.Option(String)) -> Result(
Page(a),
error.GleeTubeError,
),
max_count max_count: Int,
) -> Result(List(a), error.GleeTubeError)
Fetch pages until at least max_count items are accumulated or no more pages.