]> git.cworth.org Git - notmuch/blobdiff - bindings/ruby/database.c
ruby: add tags helper
[notmuch] / bindings / ruby / database.c
index 1cf4e4e27c170e45f2e332b3e2d5e61c93646a9d..e6387f5990af41c56df5b2311f1af44c79cf88de 100644 (file)
@@ -26,6 +26,19 @@ notmuch_rb_database_alloc (VALUE klass)
     return Data_Wrap_Notmuch_Object (klass, &notmuch_rb_database_type, NULL);
 }
 
+/*
+ * call-seq: DB.destroy => nil
+ *
+ * Destroys the database, freeing all resources allocated for it.
+ */
+VALUE
+notmuch_rb_database_destroy (VALUE self)
+{
+    notmuch_rb_object_destroy (self, &notmuch_rb_database_type);
+
+    return Qnil;
+}
+
 /*
  * call-seq: Notmuch::Database.new(path [, {:create => false, :mode => Notmuch::MODE_READ_ONLY}]) => DB
  *
@@ -46,10 +59,14 @@ notmuch_rb_database_initialize (int argc, VALUE *argv, VALUE self)
     notmuch_status_t ret;
 
     /* Check arguments */
-    rb_scan_args (argc, argv, "11", &pathv, &hashv);
+    rb_scan_args (argc, argv, "02", &pathv, &hashv);
 
-    SafeStringValue (pathv);
-    path = RSTRING_PTR (pathv);
+    if (!NIL_P (pathv)) {
+       SafeStringValue (pathv);
+       path = RSTRING_PTR (pathv);
+    } else {
+       path = NULL;
+    }
 
     if (!NIL_P (hashv)) {
        Check_Type (hashv, T_HASH);
@@ -78,7 +95,7 @@ notmuch_rb_database_initialize (int argc, VALUE *argv, VALUE self)
     if (create)
        ret = notmuch_database_create (path, &database);
     else
-       ret = notmuch_database_open (path, mode, &database);
+       ret = notmuch_database_open_with_config (path, mode, NULL, NULL, &database, NULL);
     notmuch_rb_status_raise (ret);
 
     DATA_PTR (self) = notmuch_rb_object_create (database, "notmuch_rb_database");
@@ -113,8 +130,12 @@ notmuch_rb_database_open (int argc, VALUE *argv, VALUE klass)
 VALUE
 notmuch_rb_database_close (VALUE self)
 {
+    notmuch_database_t *db;
     notmuch_status_t ret;
-    ret = notmuch_rb_object_destroy (self, &notmuch_rb_database_type);
+
+    Data_Get_Notmuch_Database (self, db);
+
+    ret = notmuch_database_close (db);
     notmuch_rb_status_raise (ret);
 
     return Qnil;
@@ -391,7 +412,7 @@ notmuch_rb_database_get_all_tags (VALUE self)
 
        rb_raise (notmuch_rb_eBaseError, "%s", msg);
     }
-    return Data_Wrap_Notmuch_Object (notmuch_rb_cTags, &notmuch_rb_tags_type, tags);
+    return notmuch_rb_tags_get (tags);
 }
 
 /*