aboutsummaryrefslogtreecommitdiffstats
path: root/src/database.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/database.rs')
-rw-r--r--src/database.rs18
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