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}