示例#1
0
        protected override async Task <QueryResult <TypeaheadItem> > SearchAsync(ISmartSearchQueryRequest qry)
        {
            switch (qry.Collection)
            {
            case OrganizationsCollectionName:
                return(await SearchOrganizations(qry));

            default:
                throw new ArgumentException($"{qry.Collection} not implemented as typeahead search collection!");
            }
        }
        public async Task <PaginatedResult <T> > Execute(ISmartSearchQueryRequest qry)
        {
            QueryResult <T> qResult = await SearchAsync(qry);

            var resp = CreateResponse(qry, qResult);

            if (CurrentPageIsOverflown(resp))
            {
                return(await Execute(new SmartSearchQueryRequest()
                {
                    Qry = qry.Qry, CurrentPage = 0, PageSize = qry.PageSize
                }));
            }
            return(resp);
        }
        protected PaginatedResult <T> CreateResponse(ISmartSearchQueryRequest request, QueryResult <T> qr)
        {
            PaginatedResult <T> retVal = new PaginatedResult <T>()
            {
                Data = new List <T>()
            };

            retVal.Data       = qr.Data;
            retVal.TotalItems = qr.Statistics.TotalResults;
            retVal.TotalPages = retVal.TotalItems / request.PageSize;
            if ((retVal.TotalItems % request.PageSize) > 0)
            {
                retVal.TotalPages += 1;
            }
            retVal.PageSize    = request.PageSize;
            retVal.CurrentPage = request.CurrentPage;
            return(retVal);
        }
        protected override async Task <QueryResult <Organization> > SearchAsync(ISmartSearchQueryRequest qry)
        {
            QueryResult <Organization> retVal   = new QueryResult <Organization>();
            QueryStatistics            statsRef = new QueryStatistics();

            using (var ses = DocumentStore.OpenAsyncSession())
            {
                var searchResult = await ses.Query <Organization, Organizations_Smart_Search>()
                                   .Statistics(out statsRef)
                                   .Search(x => x.Name, $"{qry.Qry}")
                                   .Skip(qry.CurrentPage * qry.PageSize)
                                   .Take(qry.PageSize)
                                   .ToListAsync();

                retVal.Data       = searchResult;
                retVal.Statistics = statsRef;
            }
            return(retVal);
        }
示例#5
0
        async Task <QueryResult <TypeaheadItem> > SearchOrganizations(ISmartSearchQueryRequest qry)
        {
            QueryResult <TypeaheadItem> retVal       = new QueryResult <TypeaheadItem>();
            QueryStatistics             statsRef     = new QueryStatistics();
            List <TypeaheadItem>        searchResult = null;

            using (var ses = DocumentStore.OpenAsyncSession())
            {
                searchResult = await ses.Query <Organization, Organizations_Smart_Search>()
                               .Statistics(out statsRef)
                               .Search(x => x.Name, $"{qry.Qry}")
                               .Skip(qry.CurrentPage * qry.PageSize)
                               .Take(qry.PageSize)
                               .Select(x => new TypeaheadItem {
                    Id = x.Id, Value = x.Name
                })
                               .ToListAsync();

                retVal.Data       = searchResult;
                retVal.Statistics = statsRef;
            }
            return(retVal);
        }
示例#6
0
 public Task <PaginatedResult <TypeaheadItem> > Execute(ISmartSearchQueryRequest qry)
 => Task.FromResult(new PaginatedResult <TypeaheadItem>());
示例#7
0
 public Task <PaginatedResult <Organization> > Execute(ISmartSearchQueryRequest qry)
 => Task.FromResult <PaginatedResult <Organization> >(null);
 protected abstract Task <QueryResult <T> > SearchAsync(ISmartSearchQueryRequest qry);