From 20a4fd3ed2fd48d6ae70143cbce7f7a2513a2e60 Mon Sep 17 00:00:00 2001 From: Michael Gratton Date: Thu, 5 Nov 2020 00:21:39 +1100 Subject: [PATCH] Geary.ImapDb.SearchQuery: Rename to Geary.FtsSearchQuery There's nothing IMAP-specific about the class, so move it to common and rename to reflect what it is actually used for. --- po/POTFILES.in | 2 +- .../common-fts-search-query.vala} | 10 +++++----- src/engine/imap-db/imap-db-account.vala | 10 +++++----- .../imap-engine-generic-account.vala | 2 +- src/engine/meson.build | 2 +- .../common-fts-search-query-test.vala} | 19 ++++++++++--------- test/meson.build | 2 +- test/test-engine.vala | 4 +++- 8 files changed, 27 insertions(+), 24 deletions(-) rename src/engine/{imap-db/imap-db-search-query.vala => common/common-fts-search-query.vala} (98%) rename test/engine/{imap-db/imap-db-search-query-test.vala => common/common-fts-search-query-test.vala} (92%) diff --git a/po/POTFILES.in b/po/POTFILES.in index a5cbd6ee..cbcaff2e 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -211,6 +211,7 @@ src/engine/app/email-store/app-mark-operation.vala src/engine/common/common-contact-harvester.vala src/engine/common/common-contact-store-impl.vala src/engine/common/common-message-data.vala +src/engine/common/common-fts-search-query.vala src/engine/db/db.vala src/engine/db/db-connection.vala src/engine/db/db-context.vala @@ -269,7 +270,6 @@ src/engine/imap-db/imap-db-email-identifier.vala src/engine/imap-db/imap-db-folder.vala src/engine/imap-db/imap-db-gc.vala src/engine/imap-db/imap-db-message-row.vala -src/engine/imap-db/imap-db-search-query.vala src/engine/imap-engine/gmail/imap-engine-gmail-account.vala src/engine/imap-engine/gmail/imap-engine-gmail-all-mail-folder.vala src/engine/imap-engine/gmail/imap-engine-gmail-drafts-folder.vala diff --git a/src/engine/imap-db/imap-db-search-query.vala b/src/engine/common/common-fts-search-query.vala similarity index 98% rename from src/engine/imap-db/imap-db-search-query.vala rename to src/engine/common/common-fts-search-query.vala index 0ebbf21e..a24c16dc 100644 --- a/src/engine/imap-db/imap-db-search-query.vala +++ b/src/engine/common/common-fts-search-query.vala @@ -7,9 +7,9 @@ */ /** - * Internal implementation of {@link Geary.SearchQuery}. + * A search query implementation that provides full-text search. */ -private class Geary.ImapDB.SearchQuery : Geary.SearchQuery { +internal class Geary.FtsSearchQuery : Geary.SearchQuery { private const string EMAIL_TEXT_STEMMED_TERMS = "geary-stemmed-terms"; @@ -22,9 +22,9 @@ private class Geary.ImapDB.SearchQuery : Geary.SearchQuery { private unowned SnowBall.Stemmer stemmer; - public SearchQuery(Gee.List expression, - string raw, - SnowBall.Stemmer stemmer) { + public FtsSearchQuery(Gee.List expression, + string raw, + SnowBall.Stemmer stemmer) { base(expression, raw); this.stemmer = stemmer; diff --git a/src/engine/imap-db/imap-db-account.vala b/src/engine/imap-db/imap-db-account.vala index 081281e7..fecb1867 100644 --- a/src/engine/imap-db/imap-db-account.vala +++ b/src/engine/imap-db/imap-db-account.vala @@ -585,7 +585,7 @@ private class Geary.ImapDB.Account : BaseObject { debug("Search query: %s", q.to_string()); check_open(); - ImapDB.SearchQuery query = check_search_query(q); + FtsSearchQuery query = check_search_query(q); // Do this outside of transaction to catch invalid search ids up-front string? search_ids_sql = get_search_ids_sql(search_ids); @@ -696,7 +696,7 @@ private class Geary.ImapDB.Account : BaseObject { public async Gee.Set? get_search_matches_async(Geary.SearchQuery q, Gee.Collection ids, Cancellable? cancellable = null) throws Error { check_open(); - ImapDB.SearchQuery query = check_search_query(q); + FtsSearchQuery query = check_search_query(q); Gee.Set? search_matches = null; yield db.exec_transaction_async(Db.TransactionType.RO, (cx) => { @@ -1223,7 +1223,7 @@ private class Geary.ImapDB.Account : BaseObject { // not per key-value public Gee.Map> do_get_search_matches( Db.Connection cx, - ImapDB.SearchQuery query, + FtsSearchQuery query, Gee.Map id_map, GLib.Cancellable? cancellable ) throws GLib.Error { @@ -1327,8 +1327,8 @@ private class Geary.ImapDB.Account : BaseObject { } } - private ImapDB.SearchQuery check_search_query(Geary.SearchQuery q) throws Error { - ImapDB.SearchQuery? query = q as ImapDB.SearchQuery; + private FtsSearchQuery check_search_query(Geary.SearchQuery q) throws Error { + var query = q as FtsSearchQuery; if (query == null) { throw new EngineError.BAD_PARAMETERS("Geary.SearchQuery not associated with %s", name); } diff --git a/src/engine/imap-engine/imap-engine-generic-account.vala b/src/engine/imap-engine/imap-engine-generic-account.vala index fb5ab4d9..68ed4efc 100644 --- a/src/engine/imap-engine/imap-engine-generic-account.vala +++ b/src/engine/imap-engine/imap-engine-generic-account.vala @@ -580,7 +580,7 @@ private abstract class Geary.ImapEngine.GenericAccount : Geary.Account { string text, GLib.Cancellable? cancellable ) throws GLib.Error { - return new ImapDB.SearchQuery(expression, text, this.stemmer); + return new FtsSearchQuery(expression, text, this.stemmer); } public override async Gee.MultiMap? local_search_message_id_async( diff --git a/src/engine/meson.build b/src/engine/meson.build index 1e9eecf1..b3727861 100644 --- a/src/engine/meson.build +++ b/src/engine/meson.build @@ -67,6 +67,7 @@ engine_vala_sources = files( 'common/common-contact-harvester.vala', 'common/common-contact-store-impl.vala', + 'common/common-fts-search-query.vala', 'common/common-message-data.vala', 'db/db.vala', @@ -179,7 +180,6 @@ engine_vala_sources = files( 'imap-db/imap-db-fts5-matches.c', 'imap-db/imap-db-gc.vala', 'imap-db/imap-db-message-row.vala', - 'imap-db/imap-db-search-query.vala', 'imap-db/imap-db-sqlite.c', 'imap-engine/imap-engine.vala', diff --git a/test/engine/imap-db/imap-db-search-query-test.vala b/test/engine/common/common-fts-search-query-test.vala similarity index 92% rename from test/engine/imap-db/imap-db-search-query-test.vala rename to test/engine/common/common-fts-search-query-test.vala index 4813fefa..b575f543 100644 --- a/test/engine/imap-db/imap-db-search-query-test.vala +++ b/test/engine/common/common-fts-search-query-test.vala @@ -5,17 +5,17 @@ * (version 2.1 or later). See the COPYING file in this distribution. */ -public class Geary.ImapDB.SearchQueryTest : TestCase { +public class Geary.FtsSearchQueryTest : TestCase { private GLib.File? tmp_dir = null; private Geary.AccountInformation? config = null; - private Account? account = null; + private ImapDB.Account? account = null; private SnowBall.Stemmer? stemmer = null; - public SearchQueryTest() { - base("Geary.ImapDB.SearchQueryTest"); + public FtsSearchQueryTest() { + base("Geary.FtsSearchQueryTest"); add_test("email_text_terms", email_text_terms); add_test("email_text_terms_stemmed", email_text_terms_stemmed); add_test("email_text_terms_specific", email_text_terms_specific); @@ -25,7 +25,7 @@ public class Geary.ImapDB.SearchQueryTest : TestCase { public override void set_up() throws GLib.Error { this.tmp_dir = GLib.File.new_for_path( - GLib.DirUtils.make_tmp("geary-imap-db-search-query-test-XXXXXX") + GLib.DirUtils.make_tmp("geary-common-fts-search-query-test-XXXXXX") ); this.config = new Geary.AccountInformation( @@ -35,7 +35,7 @@ public class Geary.ImapDB.SearchQueryTest : TestCase { new Geary.RFC822.MailboxAddress(null, "test@example.com") ); - this.account = new Account( + this.account = new ImapDB.Account( config, this.tmp_dir, GLib.File.new_for_path(_SOURCE_ROOT_DIR).get_child("sql") @@ -212,16 +212,17 @@ public class Geary.ImapDB.SearchQueryTest : TestCase { search_with_both.exec(null); } - private SearchQuery new_search_query(Geary.SearchQuery.Term[] ops, string raw) + private FtsSearchQuery new_search_query(Geary.SearchQuery.Term[] ops, + string raw) throws GLib.Error { - return new SearchQuery( + return new FtsSearchQuery( new Gee.ArrayList.wrap(ops), raw, this.stemmer ); } - private void assert_queries(SearchQuery query) throws GLib.Error { + private void assert_queries(FtsSearchQuery query) throws GLib.Error { var search = query.get_search_query( this.account.db.get_primary_connection(), null, diff --git a/test/meson.build b/test/meson.build index d4359f64..a4fe2c29 100644 --- a/test/meson.build +++ b/test/meson.build @@ -36,6 +36,7 @@ test_engine_sources = [ 'engine/app/app-conversation-set-test.vala', 'engine/common/common-contact-store-impl-test.vala', 'engine/common/common-contact-harvester-test.vala', + 'engine/common/common-fts-search-query-test.vala', 'engine/db/db-database-test.vala', 'engine/db/db-versioned-database-test.vala', 'engine/imap/command/imap-create-command-test.vala', @@ -53,7 +54,6 @@ test_engine_sources = [ 'engine/imap-db/imap-db-database-test.vala', 'engine/imap-db/imap-db-email-identifier-test.vala', 'engine/imap-db/imap-db-folder-test.vala', - 'engine/imap-db/imap-db-search-query-test.vala', 'engine/imap-engine/account-processor-test.vala', 'engine/imap-engine/imap-engine-generic-account-test.vala', 'engine/mime/mime-content-type-test.vala', diff --git a/test/test-engine.vala b/test/test-engine.vala index a86ee94c..e829b0bf 100644 --- a/test/test-engine.vala +++ b/test/test-engine.vala @@ -72,7 +72,9 @@ int main(string[] args) { engine.add_suite(new Geary.ImapDB.DatabaseTest().suite); engine.add_suite(new Geary.ImapDB.EmailIdentifierTest().suite); engine.add_suite(new Geary.ImapDB.FolderTest().suite); - engine.add_suite(new Geary.ImapDB.SearchQueryTest().suite); + + // Depends on ImapDB working + engine.add_suite(new Geary.FtsSearchQueryTest().suite); engine.add_suite(new Geary.ImapEngine.AccountProcessorTest().suite); engine.add_suite(new Geary.ImapEngine.GenericAccountTest().suite);