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); }
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); }
public Task <PaginatedResult <TypeaheadItem> > Execute(ISmartSearchQueryRequest qry) => Task.FromResult(new PaginatedResult <TypeaheadItem>());
public Task <PaginatedResult <Organization> > Execute(ISmartSearchQueryRequest qry) => Task.FromResult <PaginatedResult <Organization> >(null);
protected abstract Task <QueryResult <T> > SearchAsync(ISmartSearchQueryRequest qry);