public async Task InvokeAsync(IMiddlewareContext context) { await _next(context).ConfigureAwait(false); var pagingDetails = new PagingDetails { First = context.ArgumentValue <int?>("first"), After = context.ArgumentValue <string>("after"), Last = context.ArgumentValue <int?>("last"), Before = context.ArgumentValue <string>("before"), }; IQueryable <T> source = context.Result switch { IQueryable <T> q => q, IEnumerable <T> e => e.AsQueryable(), _ => null }; if (source != null) { IConnectionResolver connectionResolver = _createConnectionResolver( source, pagingDetails); context.Result = await connectionResolver .ResolveAsync(context.RequestAborted) .ConfigureAwait(false); } }
public async Task InvokeAsync(IMiddlewareContext context) { await _next(context).ConfigureAwait(false); var pagingDetails = new PagingDetails { First = context.Argument <int?>("first"), After = context.Argument <string>("after"), Last = context.Argument <int?>("last"), Before = context.Argument <string>("before"), }; IQueryable <T> source = null; if (context.Result is PageableData <T> p) { source = p.Source; pagingDetails.Properties = p.Properties; } if (context.Result is IQueryable <T> q) { source = q; } if (context.Result is IEnumerable <T> e) { source = e.AsQueryable(); } if (source != null) { IConnectionResolver connectionResolver = _createConnectionResolver( source, pagingDetails); context.Result = await connectionResolver .ResolveAsync(context.RequestAborted) .ConfigureAwait(false); } }
public async Task InvokeAsync(IMiddlewareContext context) { await _next(context).ConfigureAwait(false); var pagingDetails = new PaginationDetails { Limit = context.Argument <int?>("limit"), PageNumber = context.Argument <int?>("pageNumber"), }; IQueryable <T> source = null; if (context.Result is PageableData <T> p) { source = p.Source; pagingDetails.Properties = p.Properties; } if (context.Result is IQueryable <T> q) { source = q; } else if (context.Result is IEnumerable <T> e) { source = e.AsQueryable(); } if (source != null) { IConnectionResolver connectionResolver = _createConnectionResolver( source, pagingDetails); context.Result = await connectionResolver .ResolveAsync(context, source) .ConfigureAwait(false); } }