using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace Flow.Launcher.Plugin.Explorer.Search.WindowsIndex { public class WindowsIndexManager : IIndexProvider { private Settings Settings { get; } private QueryConstructor QueryConstructor { get; } public WindowsIndexManager(Settings settings) { Settings = settings; QueryConstructor = new QueryConstructor(Settings); } private async Task> WindowsIndexFileContentSearchAsync(Query query, string querySearchString, CancellationToken token) { if (string.IsNullOrEmpty(querySearchString)) return new List(); return await WindowsIndex.WindowsIndexSearchAsync( querySearchString, QueryConstructor.CreateQueryHelper, QueryConstructor.QueryForFileContentSearch, Settings.IndexSearchExcludedSubdirectoryPaths, query, token).ConfigureAwait(false); } private async Task> WindowsIndexFilesAndFoldersSearchAsync(Query query, string querySearchString, CancellationToken token) { return await WindowsIndex.WindowsIndexSearchAsync( querySearchString, QueryConstructor.CreateQueryHelper, QueryConstructor.QueryForAllFilesAndFolders, Settings.IndexSearchExcludedSubdirectoryPaths, query, token).ConfigureAwait(false); } private async Task> WindowsIndexTopLevelFolderSearchAsync(Query query, string path, CancellationToken token) { var queryConstructor = new QueryConstructor(Settings); return await WindowsIndex.WindowsIndexSearchAsync( path, queryConstructor.CreateQueryHelper, queryConstructor.QueryForTopLevelDirectorySearch, Settings.IndexSearchExcludedSubdirectoryPaths, query, token).ConfigureAwait(false); } public ValueTask> SearchAsync(Query query, CancellationToken token) { return default; } public ValueTask> ContentSearchAsync(Query query, CancellationToken token) { return default; } } }