melib/search: fix some search criteria in Query type

pull/223/head
Manos Pitsidianakis 2023-06-04 21:05:33 +03:00
parent 6bf1756de8
commit c5ecaceae1
Signed by: Manos Pitsidianakis
GPG Key ID: 7729C7707F7E09D0
1 changed files with 17 additions and 5 deletions

View File

@ -589,7 +589,7 @@ impl From<crate::search::Query> for Filter<EmailFilterCondition, EmailObject> {
let mut ret = Filter::Condition(EmailFilterCondition::new().into());
fn rec(q: &crate::search::Query, f: &mut Filter<EmailFilterCondition, EmailObject>) {
use crate::{
datetime::{timestamp_to_string, RFC3339_FMT},
datetime::{formats::RFC3339_DATE, timestamp_to_string},
search::Query::*,
};
match q {
@ -617,26 +617,26 @@ impl From<crate::search::Query> for Filter<EmailFilterCondition, EmailObject> {
Before(t) => {
*f = Filter::Condition(
EmailFilterCondition::new()
.before(timestamp_to_string(*t, Some(RFC3339_FMT), true))
.before(timestamp_to_string(*t, Some(RFC3339_DATE), true))
.into(),
);
}
After(t) => {
*f = Filter::Condition(
EmailFilterCondition::new()
.after(timestamp_to_string(*t, Some(RFC3339_FMT), true))
.after(timestamp_to_string(*t, Some(RFC3339_DATE), true))
.into(),
);
}
Between(a, b) => {
*f = Filter::Condition(
EmailFilterCondition::new()
.after(timestamp_to_string(*a, Some(RFC3339_FMT), true))
.after(timestamp_to_string(*a, Some(RFC3339_DATE), true))
.into(),
);
*f &= Filter::Condition(
EmailFilterCondition::new()
.before(timestamp_to_string(*b, Some(RFC3339_FMT), true))
.before(timestamp_to_string(*b, Some(RFC3339_DATE), true))
.into(),
);
}
@ -738,6 +738,18 @@ impl From<crate::search::Query> for Filter<EmailFilterCondition, EmailObject> {
rec(q, &mut qhs);
*f = !qhs;
}
Answered => {
// TODO
}
AnsweredBy { .. } => {
// TODO
}
Larger { .. } => {
// TODO
}
Smaller { .. } => {
// TODO
}
}
}
rec(&val, &mut ret);