public override async Task <PagedResults <T> > LoadPagedResultAsync <T>(PagedLoadingParameters <T> parms, CancellationToken token = default(CancellationToken))
        {
            if (parms == null)
            {
                throw new ArgumentNullException(nameof(parms));
            }

            Logger.LogTrace("LoadPagedResultAsync: {EntityType} {Paramter}", typeof(T), parms);

            IQueryable <T> items;

            if (parms.Where != null)
            {
                items = (await LoadItemsAsync <T>(parms.Where, token)).AsQueryable();
            }
            else
            {
                items = (await LoadItemsAsync <T>(token)).AsQueryable();
            }

            if (parms.OrderByDescending != null)
            {
                items = items.OrderByDescending(parms.OrderByDescending);
            }

            if (parms.OrderBy != null)
            {
                items = items.OrderBy(parms.OrderBy);
            }

            return(items.GetPagedResults(parms.PageSize, parms.Page));
        }
Esempio n. 2
0
        public override Task <PagedResults <T> > LoadPagedResultAsync <T>(PagedLoadingParameters <T> parms, CancellationToken token = default(CancellationToken))
        {
            //TODO: FIX
            throw new NotImplementedException();

            //if (parms == null)
            //{
            //    throw new ArgumentNullException(nameof(parms));
            //}

            //if (Logger.IsEnabled(LogLevel.Debug))
            //{
            //    Logger.LogDebug("LoadPagedResultAsync: {EntityType} {Paramter}", typeof(T), parms);
            //}
            //token.ThrowIfCancellationRequested();


            //var feedOptions = new FeedOptions() { MaxItemCount = parms.PageSize, EnableCrossPartitionQuery = false };
            //if (!string.IsNullOrEmpty(parms.ContinuationToken))
            //{
            //    feedOptions.RequestContinuation = parms.ContinuationToken;
            //}

            ////type filtern wegen partition key verletzungen
            //var query = _provider.CreateQuery<T>(feedOptions).Where(x => x.EntityType == TypeKeyCache.GetEntityTypeKey<T>());
            //if (parms.Where != null)
            //    query = query.Where(parms.Where);

            //if (parms.OrderByDescending != null)
            //    query = query.OrderByDescending(parms.OrderByDescending);

            //if (parms.OrderBy != null)
            //    query = query.OrderBy(parms.OrderBy);

            //var jo = JObject.Parse(query.ToString());
            //var countQuerySql = jo["query"].Value<string>();
            //countQuerySql = countQuerySql.Replace("*", "VALUE COUNT(1)");

            //var countQuery = _provider.Client.Value.CreateDocumentQuery<int>(_provider.CollectionUri, new SqlQuerySpec(countQuerySql));
            //token.ThrowIfCancellationRequested();

            //var totalCount = await countQuery.TakeOneAsync(token).ConfigureAwait(false);

            //var res = await query.ToPagedResultsAsync(token).ConfigureAwait(false);

            //return new PagedResults<T>
            //{
            //    ContinuationToken = res.ContinuationToken,
            //    Page = parms.Page,
            //    PageSize = parms.PageSize,
            //    ResultCount = res.Results.Count,
            //    Results = res.Results,
            //    TotalCount = totalCount
            //};
        }