use api_bones::{CursorPaginatedResponse, CursorPagination, PaginatedResponse, PaginationParams};
fn main() {
let params = PaginationParams {
limit: Some(10),
offset: Some(0),
};
let items: Vec<&str> = vec!["alpha", "bravo", "charlie"];
let response = PaginatedResponse::new(items, 25, ¶ms);
println!("=== Offset-based pagination ===");
println!("Items: {:?}", response.items);
println!("Total count: {}", response.total_count);
println!("Has more: {}", response.has_more);
println!("Limit: {}", response.limit);
println!("Offset: {}", response.offset);
#[cfg(feature = "serde")]
println!(
"JSON:\n{}",
serde_json::to_string_pretty(&response).expect("serialize")
);
let cursor_response = CursorPaginatedResponse::new(
vec!["delta", "echo", "foxtrot"],
CursorPagination::more("eyJpZCI6NDJ9"),
);
println!("\n=== Cursor-based pagination ===");
println!("Data: {:?}", cursor_response.data);
println!("Has more: {}", cursor_response.pagination.has_more);
println!("Next cursor: {:?}", cursor_response.pagination.next_cursor);
#[cfg(feature = "serde")]
println!(
"JSON:\n{}",
serde_json::to_string_pretty(&cursor_response).expect("serialize")
);
let last_page = CursorPaginatedResponse::new(vec!["golf"], CursorPagination::last_page());
println!("\n=== Last page ===");
println!("Has more: {}", last_page.pagination.has_more);
println!("Next cursor: {:?}", last_page.pagination.next_cursor);
}