titan_types/
pagination.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Copy, Serialize, Deserialize)]
4pub struct Pagination {
5 #[serde(default = "default_skip")]
6 pub skip: u64,
7 #[serde(default = "default_limit")]
8 pub limit: u64,
9}
10
11impl Default for Pagination {
12 fn default() -> Self {
13 Pagination {
14 skip: 0,
15 limit: u64::MAX,
16 }
17 }
18}
19
20fn default_skip() -> u64 {
21 0
22}
23
24fn default_limit() -> u64 {
25 u64::MAX
26}
27
28impl Into<Pagination> for (u64, u64) {
29 fn into(self) -> Pagination {
30 Pagination {
31 skip: self.0,
32 limit: self.1,
33 }
34 }
35}
36
37impl Into<(u64, u64)> for Pagination {
38 fn into(self) -> (u64, u64) {
39 (self.skip, self.limit)
40 }
41}
42
43#[derive(Debug, Clone, Serialize, Deserialize)]
44pub struct PaginationResponse<T> {
45 pub items: Vec<T>,
46 pub offset: u64,
47}