public void Search_Default_LimitedSongs() { BeatSaverReader reader = new BeatSaverReader() { StoreRawData = true }; int maxSongs = 10; BeatSaverSearchType searchType = BeatSaverSearchType.name; string criteria = "Believer"; BeatSaverSearchQuery query = new SearchQueryBuilder(searchType, criteria).GetQuery(); BeatSaverFeedSettings settings = new BeatSaverFeedSettings((int)BeatSaverFeedName.Search) { MaxSongs = maxSongs, SearchQuery = query }; FeedResult result = reader.GetSongsFromFeed(settings); Assert.IsTrue(result.Count > 0); Assert.IsTrue(result.Count <= 10); int expectedPages = ExpectedPagesForSongs(result.Count); Assert.AreEqual(expectedPages, result.PagesChecked); foreach (ScrapedSong song in result.Songs.Values) { Console.WriteLine($"{song.Name} by {song.LevelAuthorName}, {song.Hash}"); } }
public static NestedFilter BuildNestedFilter(DataModel.Search.Sort.NestedFilter nestedFilter) { NestedFilter.Builder builder = NestedFilter.CreateBuilder(); builder.SetPath(nestedFilter.Path); builder.SetFilter(SearchQueryBuilder.BuildQuery(nestedFilter.Query)); return(builder.Build()); }
public override void Resolve(Q.Query <Displayable> query) { //ClaimsPrincipalDto.AddMarker("kpi.SearchQueryResolver.begin"); //if (!string.IsNullOrEmpty(query.DataQueryToken)) //{ // //NamedQueryFactory.Resolve(query); // return; //} var builder = new SearchQueryBuilder(query); var queryContainer = builder.GetQueryFor <Displayable>(query); var results = ElasticSearch.Search <ElasticTitleIndex>(queryContainer); //ClaimsPrincipalDto.Add("kpi.query", Encoding.UTF8.GetString(results.RequestInformation.Request)); query.Items = new List <Displayable>(); if (results.IsValid && results.Hits.Any()) { foreach (var displayable in results.Documents.Select(item => item.MapToDisplayable())) { query.Items.Add(displayable); } ExtractFilter(query, results); query.ResultSetCount = int.Parse(results.Total.ToString(CultureInfo.InvariantCulture)); } // ClaimsPrincipalDto.AddMarker("kpi.SearchQueryResolver.end"); }
public void BeatSaverFavoriteMappers_Cancelled() { var config = DefaultConfig; var sourceConfig = DefaultConfig.BeatSaver; sourceConfig.MaxConcurrentPageChecks = 5; var feedConfig = sourceConfig.FavoriteMappers; feedConfig.MaxSongs = 60; var songDownloader = new SongDownloader(config, null, null, SONGSPATH); var reader = new BeatSaverReader(); var settings = (BeatSaverFeedSettings)feedConfig.ToFeedSettings(); var queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.author, "Ruckus"); settings.SearchQuery = queryBuilder.GetQuery(); CancellationTokenSource cts = new CancellationTokenSource(150); var resultTask = songDownloader.ReadFeed(reader, settings, 0, null, PlaylistStyle.Append, cts.Token); var result = resultTask.Result; Assert.IsNotNull(result); Assert.IsFalse(result.Successful); Assert.AreEqual(FeedResultError.Cancelled, result.ErrorCode); }
public SearchSelectRefinerDialog(IEnumerable <string> refiners, SearchQueryBuilder queryBuilder = null, PromptStyler promptStyler = null) { SetField.NotNull(out this.Refiners, nameof(refiners), refiners); this.QueryBuilder = queryBuilder ?? new SearchQueryBuilder(); this.PromptStyler = promptStyler; }
public IDictionary <int, Domain.State> GetStatesOfCountry(int CountryID) { ISearchQuery query = SearchQueryBuilder.CreateQuery() .Where("CountryID").Equals(CountryID); return(_CommonDA.Search <State>(query).Items.ToDictionary(p => p.ID)); }
public QnASearchDialog(ISearchClient searchClient, SearchQueryBuilder queryBuilder = null, PromptStyler searchHitStyler = null, bool multipleSelection = true) { SetField.NotNull(out this.SearchClient, nameof(searchClient), searchClient); this.QueryBuilder = queryBuilder ?? new SearchQueryBuilder(); this.HitStyler = searchHitStyler ?? new SearchHitStyler(); }
public async Task <IActionResult> Index(Search search) { if (!string.IsNullOrEmpty(search.Query)) { using (var connection = Connection) { var sqb = new SearchQueryBuilder(search.Query, search.Operator); connection.Open(); search.SqlQuery = sqb.SqlQuery(search.Type, search.NumberOfResults, search.Page); var sw = new Stopwatch(); sw.Start(); search.Results = connection.Query <Paper>(search.SqlQuery); sw.Stop(); search.QueryTime = sw.ElapsedMilliseconds; var logger = new SearchQueryLogger(); try { await logger.Log(connection, search); } catch (Exception e) { } return(View(search)); } } else { return(View(new Search())); } }
public Dictionary <int, OrderAssignmentStatus> GetSPOrderAssignmentStatuses() { ISearchQuery query = SearchQueryBuilder.CreateQuery() .Where("IsServiceProviderInput").Equals(true); SearchResult <OrderAssignmentStatus> result = _CommonDA.Search <OrderAssignmentStatus>(query); return(result.Items.ToDictionary(p => p.ID)); }
public void Success_Authors_LimitedSongs() { BeatSaverReader reader = new BeatSaverReader() { StoreRawData = true }; string[] authorList = new string[] { "BlackBlazon", "greatyazer", "joetastic" }; Dictionary <string, ScrapedSong> songList = new Dictionary <string, ScrapedSong>(); int maxSongs = 59; int maxPages = 10; SearchQueryBuilder queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.author, null); foreach (string author in authorList) { queryBuilder.Criteria = author; BeatSaverFeedSettings settings = new BeatSaverFeedSettings((int)BeatSaverFeedName.Author) { SearchQuery = queryBuilder.GetQuery(), MaxSongs = maxSongs, MaxPages = maxPages }; FeedResult songsByAuthor = reader.GetSongsFromFeed(settings); Assert.IsTrue(songsByAuthor.Count > 0); Assert.IsTrue(songsByAuthor.Count <= maxSongs); int expectedPages = ExpectedPagesForSongs(songsByAuthor.Count); Assert.IsTrue(expectedPages <= songsByAuthor.PagesChecked); foreach (KeyValuePair <string, ScrapedSong> song in songsByAuthor.Songs) { songList.TryAdd(song.Key, song.Value); } } IEnumerable <string> detectedAuthors = songList.Values.Select(s => s.LevelAuthorName.ToLower()).Distinct(); foreach (KeyValuePair <string, ScrapedSong> song in songList) { Assert.IsTrue(song.Value.DownloadUri != null); Assert.IsTrue(authorList.Any(a => a.ToLower() == song.Value.LevelAuthorName.ToLower())); } foreach (string author in authorList) { Assert.IsTrue(songList.Any(s => s.Value.LevelAuthorName.ToLower() == author.ToLower())); } // BlackBlazon check string blazonHash = "58de2d709a45b68fdb1dbbfefb187f59f629bfc5".ToUpper(); ScrapedSong blazonSong = songList[blazonHash]; Assert.IsTrue(blazonSong != null); Assert.IsTrue(blazonSong.DownloadUri != null); // GreatYazer check string songHash = "bf8c016dc6b9832ece3030f05277bbbe67db790d".ToUpper(); ScrapedSong yazerSong = songList[songHash]; Assert.IsTrue(yazerSong != null); Assert.IsTrue(yazerSong.DownloadUri != null); var checkedPages = songList.Values.Select(s => s.SourceUri.OriginalString).Distinct().ToList(); checkedPages.ForEach(p => Console.WriteLine(p)); }
public SearchRefineDialog(ISearchClient searchClient, string refiner, SearchQueryBuilder queryBuilder = null, PromptStyler promptStyler = null, string prompt = null) { SetField.NotNull(out this.SearchClient, nameof(searchClient), searchClient); SetField.NotNull(out this.Refiner, nameof(refiner), refiner); this.QueryBuilder = queryBuilder ?? new SearchQueryBuilder(); this.PromptStyler = promptStyler; this.Prompt = prompt ?? $"Here's what I found for {this.Refiner}."; }
public void Basic_queries_without_criteria(string baseQuery, string expectedQuery) { SearchQueryBuilder builder = SearchQueryBuilder.Create(baseQuery, false); SearchQuery searchQuery = builder.Build(null); Assert.Equal(expectedQuery, searchQuery.DataQuery); Assert.False(searchQuery.HasCountQuery); Assert.Null(searchQuery.CountQuery); }
public void Query_constructed_correctly() { SearchQueryBuilder builder = SearchQueryBuilder.Create("SELECT [[*]] FROM MyTable WHERE Active IS NULL", true); var criteria = new MyCriteria() .Where(MyField.Name).IsEqualTo("Jeevan") as MyCriteria; SearchQuery searchQuery = builder.Build(criteria); Assert.Equal("SELECT * FROM MyTable WHERE Active IS NULL AND Name = @p0", searchQuery.DataQuery); }
public void Filter_skip_2_take_3() { var searchQueryBuilder = new SearchQueryBuilder <TestModel>().Skip(2).Take(3); Console.WriteLine(searchQueryBuilder.Builder); Console.WriteLine(JsonConvert.SerializeObject(searchQueryBuilder.ToSearchQuery())); IEnumerable <TestModel> result = GetTestData().Filter(searchQueryBuilder.ToSearchQuery(), SearchIntent.InMemory); AssertResultSet(result, 3, 4, 5); }
public void Filter_empty() { var searchQueryBuilder = new SearchQueryBuilder <TestModel>(); Console.WriteLine(searchQueryBuilder.Builder); Console.WriteLine(JsonConvert.SerializeObject(searchQueryBuilder.ToSearchQuery())); IEnumerable <TestModel> result = GetTestData().Filter(searchQueryBuilder.ToSearchQuery(), SearchIntent.InMemory); AssertResultSet(result, 1, 2, 3, 4, 5, 6, 7); }
public void With_pagination(string baseQuery, string expectedDataQuery, string expectedCountQuery) { SearchQueryBuilder builder = SearchQueryBuilder.Create(baseQuery, false); SearchQuery searchQuery = builder.Build(new MyCriteria { StartRecord = 5, RecordCount = 10 }); Assert.Equal(expectedDataQuery, searchQuery.DataQuery); Assert.True(searchQuery.HasCountQuery); Assert.Equal(expectedCountQuery, searchQuery.CountQuery); }
/// <inheritdoc /> public async Task <ISearchResultContainer> For(SearchQueryBuilder query) { var formData = query.ForHttpClient(); AddFakeClickTo("submit", 85, 33, formData); string html = await PostAsync("/torrents.php", formData) .ConfigureAwait(false); return(await _parser.ExtractResultsFrom(html).ConfigureAwait(false)); }
public void Search_HasQuery() { var settings = new BeatSaverFeedSettings(BeatSaverFeedName.Search); var queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.all, "test"); settings.SearchQuery = queryBuilder.GetQuery(); var feed = new BeatSaverFeed(settings); feed.EnsureValidSettings(); Assert.IsTrue(feed.HasValidSettings); }
public void Author_EmptyCriteria() { var settings = new BeatSaverFeedSettings(BeatSaverFeedName.Author); var queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.author, ""); settings.SearchQuery = queryBuilder.GetQuery(); var feed = new BeatSaverFeed(settings); var ex = Assert.ThrowsException <InvalidFeedSettingsException>(() => feed.EnsureValidSettings()); Console.WriteLine(ex.Message); Assert.IsFalse(feed.HasValidSettings); }
public void Filter_OrderBy_Timestamp_desc() { var searchQueryBuilder = new SearchQueryBuilder <TestModel>() .AddOrderBy(x => x.Timestamp, SortOrder.Descending); Console.WriteLine(searchQueryBuilder.Builder); Console.WriteLine(JsonConvert.SerializeObject(searchQueryBuilder.ToSearchQuery())); IEnumerable <TestModel> result = GetTestData().Filter(searchQueryBuilder.ToSearchQuery(), SearchIntent.InMemory); AssertResultSet(result, 7, 4, 1, 5, 6, 2, 3); }
public DocumentFormat GetDocumentFormatByName(string name) { ISearchQuery query = SearchQueryBuilder.CreateQuery() .Where("Name").Equals(name); SearchResult <DocumentFormat> result = _CommonDA.Search <DocumentFormat>(query); if (result.Items.Count > 0) { return(result.Items.First()); } return(null); }
public ZipCode GetZipCode(string zipCode) { ISearchQuery query = SearchQueryBuilder.CreateQuery() .Where("ZipCodeName").Equals(zipCode); SearchResult <ZipCode> zipCodes = _CommonDA.Search <ZipCode>(query); if (zipCodes.Items.Count > 0) { return(zipCodes.Items[0]); } return(null); }
public void Filter_OrderBy_Name_Desc_then_Number_Desc() { var searchQueryBuilder = new SearchQueryBuilder <TestModel>() .AddOrderBy(x => x.Name, SortOrder.Descending) .AddOrderBy(x => x.Number, SortOrder.Descending); Console.WriteLine(searchQueryBuilder.Builder); Console.WriteLine(JsonConvert.SerializeObject(searchQueryBuilder.ToSearchQuery())); IEnumerable <TestModel> result = GetTestData().Filter(searchQueryBuilder.ToSearchQuery(), SearchIntent.InMemory); AssertResultSet(result, 6, 5, 4, 3, 2, 1, 7); }
public SearchQueryBuilderTests() { this.fixture = new Fixture().Customize(new AutoDbCustomization()); var sitecoreContext = Substitute.For <ISitecoreContext>(); this.commerceSearchManager = Substitute.For <ICommerceSearchManager>(); var commerceTypeLoader = Substitute.For <ICommerceTypeLoader>(); commerceTypeLoader.CreateInstance <ICommerceSearchManager>().Returns(this.commerceSearchManager); this.builder = new SearchQueryBuilder(sitecoreContext, commerceTypeLoader); }
/// <summary> /// Get all domains /// </summary> /// <returns></returns> public IList <T> GetAll() { using (ConnectionScope.Enter()) { if (typeof(ISoftDeletable).IsAssignableFrom(typeof(T))) { return(this.Search(SearchQueryBuilder.CreateQuery()).Items); } else { return(this.GetByCriteria()); } } }
public void UnusedQuery() { var querylessFeeds = new BeatSaverFeedName[] { BeatSaverFeedName.Latest, BeatSaverFeedName.Plays }; var queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.all, "test"); foreach (var feedType in querylessFeeds) { var settings = new BeatSaverFeedSettings(feedType); settings.SearchQuery = queryBuilder.GetQuery(); var feed = new BeatSaverFeed(settings); feed.EnsureValidSettings(); Assert.IsTrue(feed.HasValidSettings); } }
/// <summary> /// /// </summary> /// <param name="mapperName"></param> /// <exception cref="ArgumentNullException"></exception> /// <returns></returns> public IFeedSettings ToFeedSettings(string mapperName) { mapperName = mapperName.Trim(); if (string.IsNullOrEmpty(mapperName)) { throw new ArgumentNullException(nameof(mapperName), "mapperName cannot be a null or empty string."); } var queryBuilder = new SearchQueryBuilder(BeatSaverSearchType.author, mapperName); return(new BeatSaverFeedSettings((int)BeatSaverFeedName.Author) { MaxSongs = this.MaxSongs, SearchQuery = queryBuilder.GetQuery() }); }
public void Nullable_Number_is_not_null() { var searchQueryBuilder = new SearchQueryBuilder <TestModel>(LogicalOp.And) .AddComparer(x => x.NullableNumber, CompareOp.NotEquals, null); Console.WriteLine(searchQueryBuilder.Builder); Console.WriteLine(JsonConvert.SerializeObject(searchQueryBuilder.ToSearchQuery())); SearchQuery searchQuery = searchQueryBuilder.ToSearchQuery(); IEnumerable <TestModel> testData = GetTestData(); Expression <Func <TestModel, bool> > expression = SearchExpressionBuilder.CreateSearchExpression <TestModel>(searchQuery, SearchIntent.InMemory); var result = testData.Where(expression.Compile()); AssertResultSet(result, 1, 3, 5); }
public void String_Match_starts_and_ends_with_wildcard() { var searchQueryBuilder = new SearchQueryBuilder <TestModel>() .AddComparer(x => x.Name, CompareOp.Match, "*o*"); Console.WriteLine(searchQueryBuilder.Builder); Console.WriteLine(JsonConvert.SerializeObject(searchQueryBuilder.ToSearchQuery())); SearchQuery searchQuery = searchQueryBuilder.ToSearchQuery(); IEnumerable <TestModel> testData = GetTestData(); Expression <Func <TestModel, bool> > expression = SearchExpressionBuilder.CreateSearchExpression <TestModel>(searchQuery, SearchIntent.InMemory); var result = testData.Where(expression.Compile()); AssertResultSet(result, 2, 5, 6); }
public void EqualsIgnoreCase() { var searchQueryBuilder = new SearchQueryBuilder <TestModel>() .AddComparer(x => x.Name, CompareOp.Equals, "Name"); Console.WriteLine(searchQueryBuilder.Builder); Console.WriteLine(JsonConvert.SerializeObject(searchQueryBuilder.ToSearchQuery())); SearchQuery searchQuery = searchQueryBuilder.ToSearchQuery(); IEnumerable <TestModel> testData = GetTestData(); Expression <Func <TestModel, bool> > expression = SearchExpressionBuilder.CreateSearchExpression <TestModel>(searchQuery, SearchIntent.InMemory); var result = testData.Where(expression.Compile()); AssertResultSet(result, 3, 4); }