aboutsummaryrefslogtreecommitdiffstats
path: root/src/database.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/database.rs')
-rw-r--r--src/database.rs17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/database.rs b/src/database.rs
index a809e3d..986d638 100644
--- a/src/database.rs
+++ b/src/database.rs
@@ -15,6 +15,7 @@ use utils::{
};
use directory::Directory;
+use query::Query;
use ffi;
@@ -31,7 +32,7 @@ pub struct Revision(libc::c_ulong);
pub struct Database(*mut ffi::notmuch_database_t);
impl Database {
- pub fn create<P: AsRef<path::Path>>(path: &P) -> Result<Database> {
+ pub fn create<P: AsRef<path::Path>>(path: &P) -> Result<Self> {
let path_str = CString::new(path.as_ref().to_str().unwrap()).unwrap();
let mut db = ptr::null_mut();
@@ -42,7 +43,7 @@ impl Database {
Ok(Database(db))
}
- pub fn open<P: AsRef<path::Path>>(path: &P, mode: DatabaseMode) -> Result<Database> {
+ pub fn open<P: AsRef<path::Path>>(path: &P, mode: DatabaseMode) -> Result<Self> {
let path_str = CString::new(path.as_ref().to_str().unwrap()).unwrap();
let mut db = ptr::null_mut();
@@ -184,6 +185,18 @@ impl Database {
true => Ok(Some(Directory::new(dir))),
}
}
+
+ pub fn create_query(&self, query_string: &String) -> Result<Query> {
+ let query_str = CString::new(query_string.as_str()).unwrap();
+
+ let mut query = ptr::null_mut();
+ unsafe {
+ query = ffi::notmuch_query_create(self.0, query_str.as_ptr());
+ }
+
+ Ok(Query(query))
+ }
+
}
impl ops::Drop for Database {