[PATCH 13/25] lib: factor out expansion of saved queries.

Subject: [PATCH 13/25] lib: factor out expansion of saved queries.

Date: Sat, 17 Jul 2021 23:40:09 -0300

To: notmuch@notmuchmail.org

Cc: David Bremner

From: David Bremner


This is intended to allow use outside of the Xapian query parser.
---
 lib/query-fp.cc | 22 +++++++++++++++++++---
 lib/query-fp.h  |  4 ++++
 2 files changed, 23 insertions(+), 3 deletions(-)

diff --git a/lib/query-fp.cc b/lib/query-fp.cc
index b980b7f0..75b1d875 100644
--- a/lib/query-fp.cc
+++ b/lib/query-fp.cc
@@ -24,17 +24,33 @@
 #include "query-fp.h"
 #include <iostream>
 
-Xapian::Query
-QueryFieldProcessor::operator() (const std::string & name)
+notmuch_status_t
+_notmuch_query_name_to_query (notmuch_database_t *notmuch, const std::string name,
+			      Xapian::Query &output)
 {
     std::string key = "query." + name;
     char *expansion;
     notmuch_status_t status;
 
     status = notmuch_database_get_config (notmuch, key.c_str (), &expansion);
+    if (status)
+	return status;
+
+    output = notmuch->query_parser->parse_query (expansion, NOTMUCH_QUERY_PARSER_FLAGS);
+    return NOTMUCH_STATUS_SUCCESS;
+}
+
+Xapian::Query
+QueryFieldProcessor::operator() (const std::string & name)
+{
+    notmuch_status_t status;
+    Xapian::Query output;
+
+    status = _notmuch_query_name_to_query (notmuch, name, output);
     if (status) {
 	throw Xapian::QueryParserError ("error looking up key" + name);
     }
 
-    return parser.parse_query (expansion, NOTMUCH_QUERY_PARSER_FLAGS);
+    return output;
+
 }
diff --git a/lib/query-fp.h b/lib/query-fp.h
index beaaf405..a1b12bb9 100644
--- a/lib/query-fp.h
+++ b/lib/query-fp.h
@@ -26,6 +26,10 @@
 #include <xapian.h>
 #include "notmuch.h"
 
+notmuch_status_t
+_notmuch_query_name_to_query (notmuch_database_t *notmuch, const std::string name,
+			      Xapian::Query &output);
+
 class QueryFieldProcessor : public Xapian::FieldProcessor {
 protected:
     Xapian::QueryParser &parser;
-- 
2.30.2
_______________________________________________
notmuch mailing list -- notmuch@notmuchmail.org
To unsubscribe send an email to notmuch-leave@notmuchmail.org

Thread: