Import upstream v0.16.22, stripped
Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f Enterprise-only files removed or emptied: 63 Enterprise-only snippets removed: 117 in 50 files Dangling module declarations removed: 5 Cargo edits turning enterprise off: 14 Verification: clean Enterprise feature gates left for rebuilt features: 19 in 18 files Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
This commit is contained in:
@@ -0,0 +1,249 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
|
||||
*/
|
||||
|
||||
use crate::search::*;
|
||||
|
||||
impl SearchableField for EmailSearchField {
|
||||
fn index() -> SearchIndex {
|
||||
SearchIndex::Email
|
||||
}
|
||||
|
||||
fn primary_keys() -> &'static [SearchField] {
|
||||
&[SearchField::AccountId, SearchField::DocumentId]
|
||||
}
|
||||
|
||||
fn all_fields() -> &'static [SearchField] {
|
||||
&[
|
||||
SearchField::Email(EmailSearchField::From),
|
||||
SearchField::Email(EmailSearchField::To),
|
||||
SearchField::Email(EmailSearchField::Cc),
|
||||
SearchField::Email(EmailSearchField::Bcc),
|
||||
SearchField::Email(EmailSearchField::Subject),
|
||||
SearchField::Email(EmailSearchField::Body),
|
||||
SearchField::Email(EmailSearchField::Attachment),
|
||||
SearchField::Email(EmailSearchField::ReceivedAt),
|
||||
SearchField::Email(EmailSearchField::SentAt),
|
||||
SearchField::Email(EmailSearchField::Size),
|
||||
SearchField::Email(EmailSearchField::HasAttachment),
|
||||
SearchField::Email(EmailSearchField::Headers),
|
||||
]
|
||||
}
|
||||
|
||||
fn is_indexed(&self) -> bool {
|
||||
#[cfg(not(feature = "test_mode"))]
|
||||
{
|
||||
matches!(
|
||||
self,
|
||||
EmailSearchField::From
|
||||
| EmailSearchField::To
|
||||
| EmailSearchField::Subject
|
||||
| EmailSearchField::ReceivedAt
|
||||
| EmailSearchField::SentAt
|
||||
| EmailSearchField::Size
|
||||
| EmailSearchField::HasAttachment,
|
||||
)
|
||||
}
|
||||
|
||||
#[cfg(feature = "test_mode")]
|
||||
{
|
||||
matches!(
|
||||
self,
|
||||
EmailSearchField::From
|
||||
| EmailSearchField::To
|
||||
| EmailSearchField::Subject
|
||||
| EmailSearchField::ReceivedAt
|
||||
| EmailSearchField::SentAt
|
||||
| EmailSearchField::Size
|
||||
| EmailSearchField::HasAttachment
|
||||
| EmailSearchField::Bcc
|
||||
| EmailSearchField::Cc
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fn is_text(&self) -> bool {
|
||||
matches!(
|
||||
self,
|
||||
EmailSearchField::From
|
||||
| EmailSearchField::To
|
||||
| EmailSearchField::Cc
|
||||
| EmailSearchField::Bcc
|
||||
| EmailSearchField::Subject
|
||||
| EmailSearchField::Body
|
||||
| EmailSearchField::Attachment,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl SearchableField for CalendarSearchField {
|
||||
fn index() -> SearchIndex {
|
||||
SearchIndex::Calendar
|
||||
}
|
||||
|
||||
fn primary_keys() -> &'static [SearchField] {
|
||||
&[SearchField::AccountId, SearchField::DocumentId]
|
||||
}
|
||||
|
||||
fn all_fields() -> &'static [SearchField] {
|
||||
&[
|
||||
SearchField::Calendar(CalendarSearchField::Title),
|
||||
SearchField::Calendar(CalendarSearchField::Description),
|
||||
SearchField::Calendar(CalendarSearchField::Location),
|
||||
SearchField::Calendar(CalendarSearchField::Owner),
|
||||
SearchField::Calendar(CalendarSearchField::Attendee),
|
||||
SearchField::Calendar(CalendarSearchField::Start),
|
||||
SearchField::Calendar(CalendarSearchField::Uid),
|
||||
]
|
||||
}
|
||||
|
||||
fn is_indexed(&self) -> bool {
|
||||
matches!(self, CalendarSearchField::Start | CalendarSearchField::Uid)
|
||||
}
|
||||
|
||||
fn is_text(&self) -> bool {
|
||||
!self.is_indexed()
|
||||
}
|
||||
}
|
||||
|
||||
impl SearchableField for ContactSearchField {
|
||||
fn index() -> SearchIndex {
|
||||
SearchIndex::Contacts
|
||||
}
|
||||
|
||||
fn primary_keys() -> &'static [SearchField] {
|
||||
&[SearchField::AccountId, SearchField::DocumentId]
|
||||
}
|
||||
|
||||
fn all_fields() -> &'static [SearchField] {
|
||||
&[
|
||||
SearchField::Contact(ContactSearchField::Member),
|
||||
SearchField::Contact(ContactSearchField::Kind),
|
||||
SearchField::Contact(ContactSearchField::Name),
|
||||
SearchField::Contact(ContactSearchField::Nickname),
|
||||
SearchField::Contact(ContactSearchField::Organization),
|
||||
SearchField::Contact(ContactSearchField::Email),
|
||||
SearchField::Contact(ContactSearchField::Phone),
|
||||
SearchField::Contact(ContactSearchField::OnlineService),
|
||||
SearchField::Contact(ContactSearchField::Address),
|
||||
SearchField::Contact(ContactSearchField::Note),
|
||||
SearchField::Contact(ContactSearchField::Uid),
|
||||
]
|
||||
}
|
||||
|
||||
fn is_indexed(&self) -> bool {
|
||||
matches!(self, ContactSearchField::Uid | ContactSearchField::Kind)
|
||||
}
|
||||
|
||||
fn is_text(&self) -> bool {
|
||||
!self.is_indexed()
|
||||
}
|
||||
}
|
||||
|
||||
impl SearchableField for FileSearchField {
|
||||
fn index() -> SearchIndex {
|
||||
SearchIndex::File
|
||||
}
|
||||
|
||||
fn primary_keys() -> &'static [SearchField] {
|
||||
&[SearchField::AccountId, SearchField::DocumentId]
|
||||
}
|
||||
|
||||
fn all_fields() -> &'static [SearchField] {
|
||||
&[
|
||||
SearchField::File(FileSearchField::Name),
|
||||
SearchField::File(FileSearchField::Content),
|
||||
]
|
||||
}
|
||||
|
||||
fn is_indexed(&self) -> bool {
|
||||
false
|
||||
}
|
||||
|
||||
fn is_text(&self) -> bool {
|
||||
true
|
||||
}
|
||||
}
|
||||
|
||||
impl SearchableField for TracingSearchField {
|
||||
fn index() -> SearchIndex {
|
||||
SearchIndex::Tracing
|
||||
}
|
||||
|
||||
fn primary_keys() -> &'static [SearchField] {
|
||||
&[SearchField::Id]
|
||||
}
|
||||
|
||||
fn all_fields() -> &'static [SearchField] {
|
||||
&[
|
||||
SearchField::Tracing(TracingSearchField::EventType),
|
||||
SearchField::Tracing(TracingSearchField::QueueId),
|
||||
SearchField::Tracing(TracingSearchField::Keywords),
|
||||
]
|
||||
}
|
||||
|
||||
fn is_indexed(&self) -> bool {
|
||||
matches!(
|
||||
self,
|
||||
TracingSearchField::QueueId | TracingSearchField::EventType
|
||||
)
|
||||
}
|
||||
|
||||
fn is_text(&self) -> bool {
|
||||
matches!(self, TracingSearchField::Keywords)
|
||||
}
|
||||
}
|
||||
|
||||
impl SearchField {
|
||||
pub(crate) fn is_indexed(&self) -> bool {
|
||||
match self {
|
||||
SearchField::Email(field) => field.is_indexed(),
|
||||
SearchField::Calendar(field) => field.is_indexed(),
|
||||
SearchField::Contact(field) => field.is_indexed(),
|
||||
SearchField::File(field) => field.is_indexed(),
|
||||
SearchField::Tracing(field) => field.is_indexed(),
|
||||
SearchField::AccountId | SearchField::DocumentId | SearchField::Id => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn is_text(&self) -> bool {
|
||||
match self {
|
||||
SearchField::Email(field) => field.is_text(),
|
||||
SearchField::Calendar(field) => field.is_text(),
|
||||
SearchField::Contact(field) => field.is_text(),
|
||||
SearchField::File(field) => field.is_text(),
|
||||
SearchField::Tracing(field) => field.is_text(),
|
||||
SearchField::AccountId | SearchField::DocumentId | SearchField::Id => false,
|
||||
}
|
||||
}
|
||||
|
||||
pub(crate) fn is_json(&self) -> bool {
|
||||
matches!(self, SearchField::Email(EmailSearchField::Headers))
|
||||
}
|
||||
}
|
||||
|
||||
impl SearchIndex {
|
||||
pub fn all_fields(&self) -> &[SearchField] {
|
||||
match self {
|
||||
SearchIndex::Email => EmailSearchField::all_fields(),
|
||||
SearchIndex::Calendar => CalendarSearchField::all_fields(),
|
||||
SearchIndex::Contacts => ContactSearchField::all_fields(),
|
||||
SearchIndex::File => FileSearchField::all_fields(),
|
||||
SearchIndex::Tracing => TracingSearchField::all_fields(),
|
||||
SearchIndex::InMemory => unreachable!(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn primary_keys(&self) -> &'static [SearchField] {
|
||||
match self {
|
||||
SearchIndex::Email => EmailSearchField::primary_keys(),
|
||||
SearchIndex::Calendar => CalendarSearchField::primary_keys(),
|
||||
SearchIndex::Contacts => ContactSearchField::primary_keys(),
|
||||
SearchIndex::File => FileSearchField::primary_keys(),
|
||||
SearchIndex::Tracing => TracingSearchField::primary_keys(),
|
||||
SearchIndex::InMemory => unreachable!(),
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user