diff options
| author | David Bremner <david@tethera.net> | 2021-08-24 08:17:36 -0700 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2021-09-04 17:07:19 -0700 |
| commit | 036734252d07d8568937073d4f2d366bcb06bc4e (patch) | |
| tree | 997f1daee7297b2a5b48aa37acf11819db051df5 | |
| parent | a07ef8abf5248c1128ddc75b8139ae807a88abd9 (diff) | |
lib: factor out expansion of saved queries.
This is intended to allow use outside of the Xapian query parser.
| -rw-r--r-- | lib/database-private.h | 5 | ||||
| -rw-r--r-- | lib/query-fp.cc | 22 |
2 files changed, 24 insertions, 3 deletions
diff --git a/lib/database-private.h b/lib/database-private.h index 9ee3b933..8b9d67fe 100644 --- a/lib/database-private.h +++ b/lib/database-private.h @@ -327,6 +327,11 @@ _notmuch_regexp_to_query (notmuch_database_t *notmuch, Xapian::valueno slot, std std::string regexp_str, Xapian::Query &output, std::string &msg); +/* thread-fp.cc */ +notmuch_status_t +_notmuch_query_name_to_query (notmuch_database_t *notmuch, const std::string name, + Xapian::Query &output); + #if HAVE_SFSEXP /* parse-sexp.cc */ notmuch_status_t 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; + } |
