1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//! [Page](enum.Page.html) is used as an argument in load functions.
/// It tells Toql to build and run an additional query
/// to count the total number of records.
///
/// In Toql there are 2 types of counts: A filtered count and a total count. Lets take a datagrid where the user searches his contacts with a name starting with 'Alice'.
/// The datagrid would show the following:
/// - Total number of contacts (Unfiltered count)
/// - Number of found contacts with the name 'Alice' (Filtered count)
///
/// While the filtered count is almost for free and returned for every query,
/// the total count needs a seperate query with a different SQL filter predicate.
/// Toql can do that out of the box, but the fields must be mapped accordingly in the [TableMapper](../table_mapper/struct.TableMapper.html)
#[derive(Debug)]
pub enum Page {
/// Retrieve filtered count only.
/// Argments are *start index* and *number of records*.
Uncounted(u64, u16),
// Retrieve filtered count and total count.
/// Argments are *start index* and *number of records*.
Counted(u64, u16),
}
impl Page {
pub fn is_counted(&self) -> bool {
match self {
Page::Uncounted(_, _) => false,
Page::Counted(_, _) => true,
}
}
}
#[cfg(test)]
mod test {
use super::Page;
#[test]
fn build() {
let p = Page::Counted(1, 10);
assert!(p.is_counted())
}
}