return db->get_document (docid);
}
- Xapian::Document
- find_message_by_message_id (Xapian::Database *db, const char *message_id)
- {
- Xapian::PostingIterator i, end;
-
- find_messages_by_term (db, "msgid", message_id, &i, &end);
-
- if (i != end)
- return find_message_by_docid (db, *i);
- else
- return Xapian::Document ();
- }
-
+ static void
+ insert_thread_id (GHashTable *thread_ids, Xapian::Document doc)
+ {
+ string value_string;
+ const char *value, *id, *comma;
+
+ value_string = doc.get_value (NOTMUCH_VALUE_THREAD);
+ value = value_string.c_str();
+ if (strlen (value)) {
+ id = value;
+ while (*id) {
+ comma = strchr (id, ',');
+ if (comma == NULL)
+ comma = id + strlen (id);
+ g_hash_table_insert (thread_ids,
+ strndup (id, comma - id), NULL);
+ id = comma;
+ if (*id)
+ id++;
+ }
+ }
+ }
+
+ notmuch_message_t *
+ notmuch_database_find_message (notmuch_database_t *notmuch,
+ const char *message_id)
+ {
+ Xapian::PostingIterator i, end;
+
+ find_messages_by_term (notmuch->xapian_db,
+ "msgid", message_id, &i, &end);
+
+ if (i == end)
+ return NULL;
+
+ return _notmuch_message_create (notmuch, notmuch, *i);
+ }
+
/* Return one or more thread_ids, (as a GPtrArray of strings), for the
* given message based on looking into the database for any messages
* referenced in parents, and also for any messages in the database