From 898613116db746aa0f915ae43da8aba28545203d Mon Sep 17 00:00:00 2001 From: Ali Polatel Date: Tue, 4 Oct 2011 16:06:20 +0300 Subject: [PATCH] ruby: Add wrappers for database_find_message* Two new wrappers: Notmuch::Database.find_message(id) => Notmuch::Message or nil Notmuch::Database.find_message_by_filename(path) => Notmuch::Message or nil --- bindings/ruby/database.c | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) diff --git a/bindings/ruby/database.c b/bindings/ruby/database.c index a4659ca3..90c220a1 100644 --- a/bindings/ruby/database.c +++ b/bindings/ruby/database.c @@ -330,6 +330,66 @@ notmuch_rb_database_remove_message(VALUE self, VALUE pathv) return (ret == NOTMUCH_STATUS_DUPLICATE_MESSAGE_ID) ? Qtrue : Qfalse; } +/* + * call-seq: DB.find_message(id) => MESSAGE or nil + * + * Find a message by message id. + */ +VALUE +notmuch_rb_database_find_message(VALUE self, VALUE idv) +{ + const char *id; + notmuch_status_t ret; + notmuch_database_t *db; + notmuch_message_t *message; + + Data_Get_Notmuch_Database(self, db); + +#if !defined(RSTRING_PTR) +#define RSTRING_PTR(v) (RSTRING((v))->ptr) +#endif /* !defined(RSTRING_PTR) */ + + SafeStringValue(idv); + id = RSTRING_PTR(idv); + + ret = notmuch_database_find_message(db, id, &message); + notmuch_rb_status_raise(ret); + + if (message) + return Data_Wrap_Struct(notmuch_rb_cMessage, NULL, NULL, message); + return Qnil; +} + +/* + * call-seq: DB.find_message_by_filename(path) => MESSAGE or nil + * + * Find a message by filename. + */ +VALUE +notmuch_rb_database_find_message_by_filename(VALUE self, VALUE pathv) +{ + const char *path; + notmuch_status_t ret; + notmuch_database_t *db; + notmuch_message_t *message; + + Data_Get_Notmuch_Database(self, db); + +#if !defined(RSTRING_PTR) +#define RSTRING_PTR(v) (RSTRING((v))->ptr) +#endif /* !defined(RSTRING_PTR) */ + + SafeStringValue(pathv); + path = RSTRING_PTR(pathv); + + ret = notmuch_database_find_message_by_filename(db, path, &message); + notmuch_rb_status_raise(ret); + + if (message) + return Data_Wrap_Struct(notmuch_rb_cMessage, NULL, NULL, message); + return Qnil; +} + /* * call-seq: DB.query(query) => QUERY * -- 2.26.2