Example #1
0
        protected override PagedResult <IMedia> PerformSearch(QueryStructure query)
        {
            if (query.Lucene.IsNullOrWhiteSpace())
            {
                throw new HttpResponseException(HttpStatusCode.NotFound);
            }

            var result =
                SearchProvider.Search(
                    SearchProvider.CreateSearchCriteria().RawQuery(query.Lucene),
                    query.PageSize);

            var paged = result.Skip(GetSkipSize(query.PageIndex, query.PageSize)).ToArray();

            //TODO: We really need to make a model mapper from search result to IMedia, for now well just go lookup that content :(

            if (paged.Any())
            {
                var foundContent = MediaService.GetByIds(paged.Select(x => x.Id)).WhereNotNull();

                return(new PagedResult <IMedia>(result.TotalItemCount, query.PageIndex + 1, query.PageSize)
                {
                    Items = foundContent
                });
            }

            return(new PagedResult <IMedia>(result.TotalItemCount, query.PageIndex + 1, query.PageSize)
            {
                Items = Enumerable.Empty <IMedia>()
            });
        }