diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2020-03-01 13:47:12 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2020-06-01 13:59:37 +0200 |
commit | c52c9d17eb73f29a4a786c3b155b2f8f48d07a89 (patch) | |
tree | 659115d1f287622ed1fa58f96856e39a82607265 | |
parent | 18b12c698ca8a4fd10d0b68d9c8c657eacf491f2 (diff) |
Make import function capable of importing tags
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | lib/domain/libimagmail/Cargo.toml | 1 | ||||
-rw-r--r-- | lib/domain/libimagmail/src/lib.rs | 1 | ||||
-rw-r--r-- | lib/domain/libimagmail/src/store.rs | 19 |
3 files changed, 18 insertions, 3 deletions
diff --git a/lib/domain/libimagmail/Cargo.toml b/lib/domain/libimagmail/Cargo.toml index 22bd5eba..51ad9fca 100644 --- a/lib/domain/libimagmail/Cargo.toml +++ b/lib/domain/libimagmail/Cargo.toml @@ -37,5 +37,6 @@ libimagstore = { version = "0.10.0", path = "../../../lib/core/libimagstore libimagerror = { version = "0.10.0", path = "../../../lib/core/libimagerror" } libimagentryref = { version = "0.10.0", path = "../../../lib/entry/libimagentryref" } libimagentrylink = { version = "0.10.0", path = "../../../lib/entry/libimagentrylink/" } +libimagentrytag = { version = "0.10.0", path = "../../../lib/entry/libimagentrytag/" } libimagentryutil = { version = "0.10.0", path = "../../../lib/entry/libimagentryutil/" } diff --git a/lib/domain/libimagmail/src/lib.rs b/lib/domain/libimagmail/src/lib.rs index c572ef92..7e26d2b1 100644 --- a/lib/domain/libimagmail/src/lib.rs +++ b/lib/domain/libimagmail/src/lib.rs @@ -53,6 +53,7 @@ extern crate libimagerror; #[macro_use] extern crate libimagstore; extern crate libimagentryref; extern crate libimagentrylink; +extern crate libimagentrytag; #[macro_use] extern crate libimagentryutil; module_entry_path_mod!("mail"); diff --git a/lib/domain/libimagmail/src/store.rs b/lib/domain/libimagmail/src/store.rs index be3bf1c3..e95a88e2 100644 --- a/lib/domain/libimagmail/src/store.rs +++ b/lib/domain/libimagmail/src/store.rs @@ -31,6 +31,8 @@ use notmuch_rs::Query; use libimagstore::store::Store; use libimagstore::store::FileLockEntry; use libimagentryutil::isa::Is; +use libimagentrytag::tagable::Tagable; +use libimagentrytag::tag::is_tag_str; use crate::notmuch::connection::NotmuchConnection; use crate::mail::IsMail; @@ -64,7 +66,7 @@ impl<'a> Deref for MailStoreWithConnection<'a> { } impl<'a> MailStoreWithConnection<'a> { - pub fn import_with_query(&self, q: &str) -> Result<Vec<FileLockEntry<'a>>> { + pub fn import_with_query(&self, q: &str, tag_as_mail: Option<String>, import_tags: bool) -> Result<Vec<FileLockEntry<'a>>> { let mut new_entries = vec![]; self.connection @@ -73,8 +75,19 @@ impl<'a> MailStoreWithConnection<'a> { query .search_messages()? .map(|message| { - self.create_entry_for_id(message.id()) - .map(|entry| new_entries.push(entry)) + let mut entry = self.create_entry_for_id(message.id())?; + if let Some(tag_as_mail) = tag_as_mail.as_ref() { + entry.add_tag(tag_as_mail.clone())?; + } + if import_tags { + for tag in message.tags() { + if is_tag_str(&tag).is_ok() { + entry.add_tag(tag)?; + } + } + } + new_entries.push(entry); + Ok(()) }) .collect::<Result<Vec<_>>>()?; |