artcoded_api/models/
pageable.rs1use std::fmt::Display;
12
13use crate::models;
14use serde::{Deserialize, Serialize};
15
16#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
17pub struct Pageable {
18 #[serde(rename = "page", skip_serializing_if = "Option::is_none")]
19 pub page: Option<i32>,
20 #[serde(rename = "size", skip_serializing_if = "Option::is_none")]
21 pub size: Option<i32>,
22 #[serde(rename = "sort", skip_serializing_if = "Option::is_none")]
23 pub sort: Option<Vec<String>>,
24}
25
26impl Display for Pageable {
27 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
28 write!(
29 f,
30 "page={}&size={}{}",
31 self.page.map(|p| p - 1).unwrap_or(0),
32 self.size.unwrap_or(10),
33 self.sort
34 .as_ref()
35 .map(|s| format!("&sort={}", s.join(",")))
36 .unwrap_or("".into())
37 )
38 }
39}
40impl Pageable {
41 pub fn new() -> Pageable {
42 Pageable {
43 page: None,
44 size: None,
45 sort: None,
46 }
47 }
48}