sqlx_data_params/
serial.rs1use crate::{IntoParams, Params};
2
3#[derive(Clone, Debug)]
4pub struct SerialParams {
5 page: u32,
6 page_size: u32,
7}
8
9impl Default for SerialParams {
10 fn default() -> Self {
11 Self {
12 page: 1,
13 page_size: 20,
14 }
15 }
16}
17
18impl SerialParams {
19 pub fn new(page: u32, per_page: u32) -> Self {
20 Self {
21 page: page.max(1),
22 page_size: per_page.max(1),
23 }
24 }
25
26 #[inline]
27 pub fn page(&self) -> u32 {
28 self.page
29 }
30
31 #[inline]
32 pub fn per_page(&self) -> u32 {
33 self.page_size
34 }
35
36 #[inline]
37 pub fn offset(&self) -> u32 {
38 (self.page.saturating_sub(1)).saturating_mul(self.page_size)
39 }
40
41 #[inline]
42 pub fn limit(&self) -> u32 {
43 self.page_size
44 }
45}
46
47impl IntoParams for SerialParams {
48 fn into_params(self) -> Params {
49 let page_size = self.page_size;
50 let offset = self.offset();
51 Params {
52 filters: None,
53 search: None,
54 sort_by: None,
55 pagination: Some(crate::pagination::Pagination::Serial(self)),
56 limit: Some(crate::pagination::LimitParam(page_size)),
57 offset: Some(crate::pagination::OffsetParam(offset)),
58 }
59 }
60}