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());
 }
Пример #3
0
        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");
        }
Пример #4
0
        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;
        }
Пример #6
0
        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));
        }
Пример #7
0
        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();
        }
Пример #8
0
 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()));
     }
 }
Пример #9
0
        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));
        }
Пример #11
0
        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}.";
        }
Пример #12
0
        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);
        }
Пример #13
0
        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);
        }
Пример #14
0
        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);
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }
Пример #17
0
        /// <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);
        }
Пример #20
0
        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);
        }
Пример #21
0
        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);
        }
Пример #22
0
        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);
        }
Пример #23
0
        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);
        }
Пример #25
0
 /// <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);
            }
        }
Пример #27
0
        /// <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()
            });
        }
Пример #28
0
        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);
        }
Пример #29
0
        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);
        }
Пример #30
0
        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);
        }