io_email/search/sort/
query.rs1use alloc::vec::Vec;
7
8pub type SearchEmailsSortQuery = Vec<SearchEmailsSorter>;
13
14#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
16pub struct SearchEmailsSorter(
17 pub SearchEmailsSorterKind,
19 pub SearchEmailsSorterOrder,
21);
22
23impl SearchEmailsSorter {
24 pub fn new(kind: SearchEmailsSorterKind, order: SearchEmailsSorterOrder) -> Self {
26 Self(kind, order)
27 }
28}
29
30impl From<(SearchEmailsSorterKind, SearchEmailsSorterOrder)> for SearchEmailsSorter {
31 fn from((kind, order): (SearchEmailsSorterKind, SearchEmailsSorterOrder)) -> Self {
32 SearchEmailsSorter::new(kind, order)
33 }
34}
35
36impl From<(SearchEmailsSorterKind, Option<SearchEmailsSorterOrder>)> for SearchEmailsSorter {
37 fn from((kind, order): (SearchEmailsSorterKind, Option<SearchEmailsSorterOrder>)) -> Self {
38 (kind, order.unwrap_or_default()).into()
39 }
40}
41
42impl From<SearchEmailsSorterKind> for SearchEmailsSorter {
43 fn from(kind: SearchEmailsSorterKind) -> Self {
44 (kind, None).into()
45 }
46}
47
48#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
53pub enum SearchEmailsSorterKind {
54 Date,
56
57 From,
59
60 To,
62
63 Subject,
65}
66
67#[derive(Clone, Debug, Default, Eq, PartialEq, Ord, PartialOrd)]
69pub enum SearchEmailsSorterOrder {
70 #[default]
72 Ascending,
73
74 Descending,
76}