pub mod parser;
pub type SearchEmailsSortQuery = Vec<SearchEmailsSorter>;
#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
pub struct SearchEmailsSorter(
pub SearchEmailsSorterKind,
pub SearchEmailsSorterOrder,
);
impl SearchEmailsSorter {
pub fn new(kind: SearchEmailsSorterKind, order: SearchEmailsSorterOrder) -> Self {
Self(kind, order)
}
}
impl From<(SearchEmailsSorterKind, SearchEmailsSorterOrder)> for SearchEmailsSorter {
fn from((kind, order): (SearchEmailsSorterKind, SearchEmailsSorterOrder)) -> Self {
SearchEmailsSorter::new(kind, order)
}
}
impl From<(SearchEmailsSorterKind, Option<SearchEmailsSorterOrder>)> for SearchEmailsSorter {
fn from((kind, order): (SearchEmailsSorterKind, Option<SearchEmailsSorterOrder>)) -> Self {
(kind, order.unwrap_or_default()).into()
}
}
impl From<SearchEmailsSorterKind> for SearchEmailsSorter {
fn from(kind: SearchEmailsSorterKind) -> Self {
(kind, None).into()
}
}
#[derive(Clone, Debug, Eq, PartialEq, Ord, PartialOrd)]
pub enum SearchEmailsSorterKind {
Date,
From,
To,
Subject,
}
#[derive(Clone, Debug, Default, Eq, PartialEq, Ord, PartialOrd)]
pub enum SearchEmailsSorterOrder {
#[default]
Ascending,
Descending,
}