xpx_chain_sdk/api/
page_query_params.rs

1/*
2 * Copyright 2018 ProximaX Limited. All rights reserved.
3 * Use of this source code is governed by the Apache 2.0
4 * license that can be found in the LICENSE file.
5 */
6
7/// The query params structure describes pagination by page number and page size.
8///
9#[derive(Clone, Debug, Eq, PartialEq, Builder, Serialize)]
10#[serde(rename_all = "camelCase")]
11pub struct PageQueryParams {
12    // Page number should be non negative number, otherwise 0 (first page).
13    pub page: u16,
14
15    // Page size between 10 and 100, otherwise 25.
16    pub page_size: u8,
17}
18
19impl PageQueryParams {
20    pub fn create(page: u16, page_size: u8) -> PageQueryParams {
21        let page_size = if page_size >= 10 && page_size <= 100 { page_size } else { 25 };
22
23        PageQueryParams { page, page_size }
24    }
25
26    /// Serializes a `PageQueryParams` into a query string.
27    ///
28    pub fn to_query_string(&self) -> String {
29        qs::to_string(self).unwrap()
30    }
31}
32
33impl Default for PageQueryParams {
34    fn default() -> Self {
35        PageQueryParams { page: 0, page_size: 25 }
36    }
37}