diff options
Diffstat (limited to 'src/database.rs')
| -rw-r--r-- | src/database.rs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/src/database.rs b/src/database.rs index 6390c15..67ed3da 100644 --- a/src/database.rs +++ b/src/database.rs @@ -10,6 +10,7 @@ use ffi; use utils::ToStr; use Directory; use Query; +use query::QueryPtr; use Tags; use TagsOwner; @@ -36,6 +37,17 @@ impl Drop for DatabasePtr { } } +impl DatabasePtr { + + pub(crate) fn create_query(&self, query_string: &str) -> Result<QueryPtr> { + let query_str = CString::new(query_string).unwrap(); + + let query = unsafe { ffi::notmuch_query_create(self.ptr, query_str.as_ptr()) }; + + Ok(QueryPtr { ptr: query }) + } +} + #[derive(Debug)] pub struct Database { pub(crate) handle: DatabasePtr, @@ -74,7 +86,7 @@ impl Database { Ok(()) } - + pub fn compact<P: AsRef<Path>, F: FnMut(&str)>( path: &P, backup_path: Option<&P>, @@ -214,11 +226,9 @@ impl Database { } pub fn create_query<'d>(&'d self, query_string: &str) -> Result<Query<'d>> { - let query_str = CString::new(query_string).unwrap(); - - let query = unsafe { ffi::notmuch_query_create(self.handle.ptr, query_str.as_ptr()) }; - - Ok(Query::from_ptr(query, self)) + self.handle.create_query(query_string).map(move |handle|{ + Query::from_handle(handle, self) + }) } pub fn all_tags<'d>(&'d self) -> Result<Tags<'d, Self>> { |
