From 3d7b9ff7cb58cb608eeb7b35ef75e56c541fcd8f Mon Sep 17 00:00:00 2001 From: Manos Pitsidianakis Date: Sat, 4 Apr 2020 19:49:54 +0300 Subject: [PATCH] Move Query to melib --- melib/src/lib.rs | 1 + src/cache.rs => melib/src/search.rs | 18 ++++++++---------- src/bin.rs | 1 - src/components/mail/listing/compact.rs | 2 +- src/components/mail/listing/conversations.rs | 2 +- src/components/mail/listing/plain.rs | 2 +- src/conf/accounts.rs | 2 +- src/conf/listing.rs | 2 +- src/managesieve.rs | 1 - src/sqlite3.rs | 2 +- 10 files changed, 15 insertions(+), 18 deletions(-) rename src/cache.rs => melib/src/search.rs (98%) diff --git a/melib/src/lib.rs b/melib/src/lib.rs index bae5b70a8..38000c79f 100644 --- a/melib/src/lib.rs +++ b/melib/src/lib.rs @@ -123,6 +123,7 @@ pub mod thread; pub use crate::email::*; pub use crate::thread::*; pub mod parsec; +pub mod search; #[macro_use] extern crate serde_derive; diff --git a/src/cache.rs b/melib/src/search.rs similarity index 98% rename from src/cache.rs rename to melib/src/search.rs index 078f2ef48..12a4f8426 100644 --- a/src/cache.rs +++ b/melib/src/search.rs @@ -1,7 +1,7 @@ /* - * meli + * meli - melib * - * Copyright 2017-2018 Manos Pitsidianakis + * Copyright 2019-2020 Manos Pitsidianakis * * This file is part of meli. * @@ -19,11 +19,9 @@ * along with meli. If not, see . */ -/*! Search queries. - */ -use melib::parsec::*; -use melib::UnixTimestamp; -use melib::{ +use crate::parsec::*; +use crate::UnixTimestamp; +use crate::{ backends::{MailBackend, MailboxHash}, email::EnvelopeHash, thread::{SortField, SortOrder}, @@ -65,7 +63,7 @@ pub trait QueryTrait { fn is_match(&self, query: &Query) -> bool; } -impl QueryTrait for melib::Envelope { +impl QueryTrait for crate::Envelope { fn is_match(&self, query: &Query) -> bool { use Query::*; match query { @@ -233,7 +231,7 @@ pub mod query_parser { /// ``` /// use ui::cache::query; /// use ui::cache::Query; - /// use melib::parsec::Parser; + /// use crate::parsec::Parser; /// /// let input = "test"; /// let query = query().parse(input); @@ -474,7 +472,7 @@ pub fn imap_search( let backend_lck = backend.read().unwrap(); let b = (*backend_lck).as_any(); - if let Some(imap_backend) = b.downcast_ref::() { + if let Some(imap_backend) = b.downcast_ref::() { imap_backend.search(query_to_imap(&query), mailbox_hash) } else { panic!("Could not downcast ImapType backend. BUG"); diff --git a/src/bin.rs b/src/bin.rs index 312569c4a..d0ddf2d99 100644 --- a/src/bin.rs +++ b/src/bin.rs @@ -84,7 +84,6 @@ use crate::workers::*; #[cfg(feature = "sqlite3")] pub mod sqlite3; -pub mod cache; pub mod mailcap; pub mod plugins; diff --git a/src/components/mail/listing/compact.rs b/src/components/mail/listing/compact.rs index 56bfd6d91..33828d28f 100644 --- a/src/components/mail/listing/compact.rs +++ b/src/components/mail/listing/compact.rs @@ -754,7 +754,7 @@ impl CompactListing { let root_envelope: EnvelopeRef = context.accounts[self.cursor_pos.0] .collection .get_env(root_env_hash); - use crate::cache::QueryTrait; + use melib::search::QueryTrait; if let Some(filter_query) = mailbox_settings!( context[self.cursor_pos.0][&self.cursor_pos.1] .listing diff --git a/src/components/mail/listing/conversations.rs b/src/components/mail/listing/conversations.rs index 6caec9cdc..6dca759e5 100644 --- a/src/components/mail/listing/conversations.rs +++ b/src/components/mail/listing/conversations.rs @@ -703,7 +703,7 @@ impl ConversationsListing { let root_envelope: &EnvelopeRef = &context.accounts[self.cursor_pos.0] .collection .get_env(root_env_hash); - use crate::cache::QueryTrait; + use melib::search::QueryTrait; if let Some(filter_query) = mailbox_settings!( context[self.cursor_pos.0][&self.cursor_pos.1] .listing diff --git a/src/components/mail/listing/plain.rs b/src/components/mail/listing/plain.rs index 4de5585f2..a1f0b48e7 100644 --- a/src/components/mail/listing/plain.rs +++ b/src/components/mail/listing/plain.rs @@ -711,7 +711,7 @@ impl PlainListing { panic!(); } let envelope: EnvelopeRef = context.accounts[self.cursor_pos.0].collection.get_env(i); - use crate::cache::QueryTrait; + use melib::search::QueryTrait; if let Some(filter_query) = mailbox_settings!( context[self.cursor_pos.0][&self.cursor_pos.1] .listing diff --git a/src/conf/accounts.rs b/src/conf/accounts.rs index 4c0613e29..cd91d9e3c 100644 --- a/src/conf/accounts.rs +++ b/src/conf/accounts.rs @@ -1133,7 +1133,7 @@ impl Account { mailbox_hash: MailboxHash, ) -> Result> { if self.settings.account().format() == "imap" { - return crate::cache::imap_search(search_term, sort, mailbox_hash, &self.backend); + return melib::search::imap_search(search_term, sort, mailbox_hash, &self.backend); } #[cfg(feature = "notmuch")] diff --git a/src/conf/listing.rs b/src/conf/listing.rs index b92eb60dc..513342e07 100644 --- a/src/conf/listing.rs +++ b/src/conf/listing.rs @@ -20,8 +20,8 @@ */ use super::{default_vals::*, IndexStyle}; -use crate::cache::Query; use crate::override_def; +use melib::search::Query; override_def!( ListingSettingsOverride, diff --git a/src/managesieve.rs b/src/managesieve.rs index 6a647b036..738221e82 100644 --- a/src/managesieve.rs +++ b/src/managesieve.rs @@ -74,7 +74,6 @@ use crate::workers::*; #[cfg(feature = "sqlite3")] pub mod sqlite3; -pub mod cache; pub mod mailcap; pub mod plugins; diff --git a/src/sqlite3.rs b/src/sqlite3.rs index 047735e9f..cad5bcb78 100644 --- a/src/sqlite3.rs +++ b/src/sqlite3.rs @@ -22,7 +22,7 @@ /*! Use an sqlite3 database for fast searching. */ use smallvec::SmallVec; -use crate::cache::{escape_double_quote, query, Query::{self, *}}; +use melib::search::{escape_double_quote, query, Query::{self, *}}; use crate::melib::parsec::Parser; use melib::{ backends::MailBackend,