IMAP: Map header searches to indexed fields
This commit is contained in:
@@ -468,6 +468,31 @@ impl<T: SessionStream> SessionData<T> {
|
|||||||
}
|
}
|
||||||
Filter::Header(header, value) => {
|
Filter::Header(header, value) => {
|
||||||
if let Some(header) = HeaderName::parse(header) {
|
if let Some(header) = HeaderName::parse(header) {
|
||||||
|
match header {
|
||||||
|
HeaderName::Subject => {
|
||||||
|
filters.push(SearchFilter::has_text_detect(
|
||||||
|
EmailSearchField::Subject,
|
||||||
|
value,
|
||||||
|
self.server.core.jmap.default_language,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
header @ (HeaderName::From
|
||||||
|
| HeaderName::To
|
||||||
|
| HeaderName::Cc
|
||||||
|
| HeaderName::Bcc) => {
|
||||||
|
filters.push(SearchFilter::has_text(
|
||||||
|
match header {
|
||||||
|
HeaderName::From => EmailSearchField::From,
|
||||||
|
HeaderName::To => EmailSearchField::To,
|
||||||
|
HeaderName::Cc => EmailSearchField::Cc,
|
||||||
|
HeaderName::Bcc => EmailSearchField::Bcc,
|
||||||
|
_ => unreachable!(),
|
||||||
|
},
|
||||||
|
value,
|
||||||
|
Language::None,
|
||||||
|
));
|
||||||
|
}
|
||||||
|
header => {
|
||||||
let op = if matches!(
|
let op = if matches!(
|
||||||
header,
|
header,
|
||||||
HeaderName::MessageId
|
HeaderName::MessageId
|
||||||
@@ -491,6 +516,8 @@ impl<T: SessionStream> SessionData<T> {
|
|||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Filter::Subject(text) => {
|
Filter::Subject(text) => {
|
||||||
filters.push(SearchFilter::has_text_detect(
|
filters.push(SearchFilter::has_text_detect(
|
||||||
EmailSearchField::Subject,
|
EmailSearchField::Subject,
|
||||||
|
|||||||
Reference in New Issue
Block a user