diff options
Diffstat (limited to 'src/database.rs')
| -rw-r--r-- | src/database.rs | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/database.rs b/src/database.rs index 8f64fdd..a809e3d 100644 --- a/src/database.rs +++ b/src/database.rs @@ -19,11 +19,14 @@ use directory::Directory; use ffi; // Re-exported under database module for pretty namespacin'. -pub use ffi::DatabaseOpenMode; +pub use ffi::DatabaseMode; #[derive(Copy, Clone, Debug)] pub struct Version(libc::c_uint); +#[derive(Copy, Clone, Debug)] +pub struct Revision(libc::c_ulong); + #[derive(Debug)] pub struct Database(*mut ffi::notmuch_database_t); @@ -39,13 +42,15 @@ impl Database { Ok(Database(db)) } - pub fn open<P: AsRef<path::Path>>(path: &P, mode: DatabaseOpenMode) -> Result<Database> { + pub fn open<P: AsRef<path::Path>>(path: &P, mode: DatabaseMode) -> Result<Database> { let path_str = CString::new(path.as_ref().to_str().unwrap()).unwrap(); let mut db = ptr::null_mut(); try!(unsafe { ffi::notmuch_database_open( - path_str.as_ptr(), mode.into(), &mut db, + path_str.as_ptr(), + mode.into(), + &mut db, ) }.as_result()); @@ -117,6 +122,13 @@ impl Database { }) } + pub fn revision(&self) -> Revision { + let uuid = ptr::null_mut(); + Revision(unsafe { + ffi::notmuch_database_get_revision(self.0, uuid) + }) + } + pub fn needs_upgrade(&self) -> bool { unsafe { ffi::notmuch_database_needs_upgrade(self.0) == 1 |
