Skip to main content

blockfrost/
pagination.rs

1use crate::{DEFAULT_ORDER, DEFAULT_PAGINATION_PAGE_COUNT, DEFAULT_PAGINATION_PAGE_ITEMS_COUNT};
2
3#[derive(Clone, Copy)]
4pub struct Pagination {
5    pub fetch_all: bool,
6    pub count: usize,
7    pub page: usize,
8    pub order: Order,
9}
10
11impl Default for Pagination {
12    fn default() -> Self {
13        Pagination {
14            fetch_all: false,
15            count: DEFAULT_PAGINATION_PAGE_ITEMS_COUNT,
16            page: DEFAULT_PAGINATION_PAGE_COUNT,
17            order: DEFAULT_ORDER,
18        }
19    }
20}
21
22impl Pagination {
23    pub fn new(order: Order, page: usize, count: usize) -> Self {
24        Pagination {
25            fetch_all: false,
26            order,
27            page,
28            count,
29        }
30    }
31
32    pub fn all() -> Self {
33        Pagination {
34            fetch_all: true,
35            ..Default::default()
36        }
37    }
38
39    pub fn order_to_string(&self) -> String {
40        match self.order {
41            Order::Asc => "asc".to_string(),
42            Order::Desc => "desc".to_string(),
43        }
44    }
45}
46
47#[derive(Clone, Copy)]
48pub enum Order {
49    Asc,
50    Desc,
51}