From 7b69d98e5984d5a4cbabd9d73d5ebfa69e5be481 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Mon, 18 May 2020 22:23:20 +1000 Subject: [PATCH] Add Seacher class and move OleDb connection method --- .../Search/WindowsIndex/QueryConstructor.cs | 42 ------------- .../Search/WindowsIndex/Searcher.cs | 61 +++++++++++++++++++ 2 files changed, 61 insertions(+), 42 deletions(-) create mode 100644 Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs index 59ff420dc..7a71c2519 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/QueryConstructor.cs @@ -1,16 +1,9 @@ using Microsoft.Search.Interop; -using System; -using System.Collections.Generic; -using System.Data.OleDb; namespace Flow.Launcher.Plugin.Explorer.Search.WindowsIndex { public class QueryConstructor { - public OleDbConnection conn; - public OleDbCommand command; - public OleDbDataReader dataReaderResults; - private Settings _settings; private const string SystemIndex = "SystemIndex"; @@ -89,40 +82,5 @@ namespace Flow.Launcher.Plugin.Explorer.Search.WindowsIndex { return $"scope='file:'"; } - - internal List ExecuteWindowsIndexSearch(string query) - { - var results = new List(); - - using (conn = new OleDbConnection(CreateQueryHelper().ConnectionString)) - { - conn.Open(); - - using (command = new OleDbCommand(query, conn)) - { - // Results return as an OleDbDataReader. - using (dataReaderResults = command.ExecuteReader()) - { - if (dataReaderResults.HasRows) - { - while (dataReaderResults.Read()) - { - if (dataReaderResults.GetValue(0) != DBNull.Value && dataReaderResults.GetValue(1) != DBNull.Value) - { - var result = new Result - { - Title = dataReaderResults.GetString(0), - SubTitle = dataReaderResults.GetString(1) - }; - results.Add(result); - } - } - } - } - } - } - - return results; - } } } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs new file mode 100644 index 000000000..3af30085d --- /dev/null +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs @@ -0,0 +1,61 @@ +using System; +using System.Collections.Generic; +using System.Data.OleDb; + +namespace Flow.Launcher.Plugin.Explorer.Search.WindowsIndex +{ + internal class Searcher + { + public OleDbConnection conn; + + public OleDbCommand command; + + public OleDbDataReader dataReaderResults; + + private readonly object _lock = new object(); + + internal List ExecuteWindowsIndexSearch(string query, string connectionString) + { + var results = new List(); + + using (conn = new OleDbConnection(connectionString)) + { + conn.Open(); + + using (command = new OleDbCommand(query, conn)) + { + // Results return as an OleDbDataReader. + using (dataReaderResults = command.ExecuteReader()) + { + if (dataReaderResults.HasRows) + { + while (dataReaderResults.Read()) + { + if (dataReaderResults.GetValue(0) != DBNull.Value && dataReaderResults.GetValue(1) != DBNull.Value) + { + var result = new Result + { + Title = dataReaderResults.GetString(0), + SubTitle = dataReaderResults.GetString(1) + }; + results.Add(result); + } + } + } + } + } + } + + return results; + } + + internal List WindowsIndexSearch(string query, string connectionString, Func constructQuery) + { + lock (_lock) + { + var constructedQuery = constructQuery(query); + return ExecuteWindowsIndexSearch(constructedQuery, connectionString); + } + } + } +}