From: Daniel Kahn Gillmor Date: Sat, 9 Apr 2016 01:54:49 +0000 (-0300) Subject: Add internal functions to search for alternate doc types X-Git-Tag: 0.22_rc0~8 X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=commitdiff_plain;h=011fc41d4d1a1dc9ae3765c9f08ee603eea7bc7e;hp=604d1e0977c2ede365f87492d6b9bf9a83c3e1d3 Add internal functions to search for alternate doc types Publicly we are only exposing the non-ghost documents (of "type" "mail"). But internally we might want to inspect the ghost messages as well. This changeset adds two new private interfaces to queries to recover information about alternate document types. --- diff --git a/lib/notmuch-private.h b/lib/notmuch-private.h index 5dd4770e..d95bf310 100644 --- a/lib/notmuch-private.h +++ b/lib/notmuch-private.h @@ -477,6 +477,17 @@ void _notmuch_doc_id_set_remove (notmuch_doc_id_set_t *doc_ids, unsigned int doc_id); +/* querying xapian documents by type (e.g. "mail" or "ghost"): */ +notmuch_status_t +_notmuch_query_search_documents (notmuch_query_t *query, + const char *type, + notmuch_messages_t **out); + +notmuch_status_t +_notmuch_query_count_documents (notmuch_query_t *query, + const char *type, + unsigned *count_out); + /* message.cc */ void diff --git a/lib/query.cc b/lib/query.cc index e627bfc2..77a7926b 100644 --- a/lib/query.cc +++ b/lib/query.cc @@ -186,6 +186,14 @@ notmuch_query_search_messages (notmuch_query_t *query) notmuch_status_t notmuch_query_search_messages_st (notmuch_query_t *query, notmuch_messages_t **out) +{ + return _notmuch_query_search_documents (query, "mail", out); +} + +notmuch_status_t +_notmuch_query_search_documents (notmuch_query_t *query, + const char *type, + notmuch_messages_t **out) { notmuch_database_t *notmuch = query->notmuch; const char *query_string = query->query_string; @@ -208,7 +216,7 @@ notmuch_query_search_messages_st (notmuch_query_t *query, Xapian::Enquire enquire (*notmuch->xapian_db); Xapian::Query mail_query (talloc_asprintf (query, "%s%s", _find_prefix ("type"), - "mail")); + type)); Xapian::Query string_query, final_query, exclude_query; Xapian::MSet mset; Xapian::MSetIterator iterator; @@ -553,6 +561,12 @@ notmuch_query_count_messages (notmuch_query_t *query) notmuch_status_t notmuch_query_count_messages_st (notmuch_query_t *query, unsigned *count_out) +{ + return _notmuch_query_count_documents (query, "mail", count_out); +} + +notmuch_status_t +_notmuch_query_count_documents (notmuch_query_t *query, const char *type, unsigned *count_out) { notmuch_database_t *notmuch = query->notmuch; const char *query_string = query->query_string; @@ -562,7 +576,7 @@ notmuch_query_count_messages_st (notmuch_query_t *query, unsigned *count_out) Xapian::Enquire enquire (*notmuch->xapian_db); Xapian::Query mail_query (talloc_asprintf (query, "%s%s", _find_prefix ("type"), - "mail")); + type)); Xapian::Query string_query, final_query, exclude_query; Xapian::MSet mset; unsigned int flags = (Xapian::QueryParser::FLAG_BOOLEAN |