sqlx_data_params/
params.rs1use crate::filter::FilterParams;
2use crate::pagination::LimitParam;
3use crate::pagination::OffsetParam;
4use crate::pagination::Pagination;
5use crate::search::SearchParams;
6use crate::sort::SortingParams;
7
8#[derive(Clone, Debug, Default)]
9pub struct Params {
10 pub filters: Option<FilterParams>,
11 pub search: Option<SearchParams>,
12 pub sort_by: Option<SortingParams>,
13 pub limit: Option<LimitParam>,
14 pub offset: Option<OffsetParam>,
15 pub pagination: Option<Pagination>,
16}
17
18impl Params {
19 pub fn is_empty(&self) -> bool {
21 self.filters.is_none()
22 && self.search.is_none()
23 && self.sort_by.is_none()
24 && self.pagination.is_none()
25 && self.limit.is_none()
26 && self.offset.is_none()
27 }
28
29 pub fn has_modifications(&self) -> bool {
31 !self.is_empty()
32 }
33
34 pub fn is_disable_total_count(&self) -> bool {
35 match &self.pagination {
36 Some(Pagination::Slice(slice)) => slice.disable_total_count,
37 _ => false, }
39 }
40
41 pub fn limit_plus_one(&self) -> u32 {
43 match &self.pagination {
44 Some(Pagination::Slice(_)) => 1, Some(Pagination::Cursor(_)) => 1, Some(Pagination::Serial(_)) => 0, None => 0, }
49 }
50}