Database schema optimization - part 3

This commit is contained in:
mdecimus
2025-11-01 19:19:36 +01:00
parent d5c5f12adf
commit 8e1316895b
41 changed files with 1979 additions and 1276 deletions

View File

@@ -26,16 +26,12 @@ use std::{borrow::Cow, str::FromStr, sync::Arc, time::Instant};
use store::{
query::log::Query,
roaring::RoaringBitmap,
search::{EmailSearchField, SearchComparator, SearchFilter},
write::now,
search::{EmailSearchField, SearchComparator, SearchFilter, SearchQuery},
write::{SearchIndex, now},
};
use tokio::sync::watch;
use trc::AddContext;
use types::{
collection::{Collection, SyncCollection},
id::Id,
keyword::Keyword,
};
use types::{collection::SyncCollection, id::Id, keyword::Keyword};
impl<T: SessionStream> Session<T> {
pub async fn handle_search(
@@ -226,8 +222,6 @@ impl<T: SessionStream> SessionData<T> {
.map(|m| m.document_id),
);
filters.push(SearchFilter::is_in_set(message_ids.clone()));
// Convert query
let mut include_highest_modseq = false;
for filter in imap_filter {
@@ -594,10 +588,11 @@ impl<T: SessionStream> SessionData<T> {
self.server
.search_store()
.query(
mailbox.id.account_id,
Collection::Email,
filters,
comparators,
SearchQuery::new(SearchIndex::Email)
.with_filters(filters)
.with_comparators(comparators)
.with_account_id(mailbox.id.account_id)
.with_mask(message_ids),
)
.await
.map(|res| (res, include_highest_modseq))