/// <inheritdoc /> public virtual async Task <IReadOnlyCollection <TResource> > GetAsync() { _traceWriter.LogMethodStart(); _hookExecutor?.BeforeRead <TResource>(ResourcePipeline.Get); if (_options.IncludeTotalResourceCount) { var topFilter = _queryLayerComposer.GetTopFilter(); _paginationContext.TotalResourceCount = await _repository.CountAsync(topFilter); if (_paginationContext.TotalResourceCount == 0) { return(Array.Empty <TResource>()); } } var queryLayer = _queryLayerComposer.Compose(_request.PrimaryResource); var resources = await _repository.GetAsync(queryLayer); if (_hookExecutor != null) { _hookExecutor.AfterRead(resources, ResourcePipeline.Get); return(_hookExecutor.OnReturn(resources, ResourcePipeline.Get).ToArray()); } if (queryLayer.Pagination?.PageSize != null && queryLayer.Pagination.PageSize.Value == resources.Count) { _paginationContext.IsPageFull = true; } return(resources); }
public virtual async Task <IReadOnlyCollection <TResource> > GetAsync() { _logger.LogTrace($"Entering {nameof(GetAsync)}()."); _hookExecutor?.BeforeRead <TResource>(ResourcePipeline.Get); if (_options.IncludeTotalResourceCount) { var topFilter = _queryLayerComposer.GetTopFilter(); _paginationContext.TotalResourceCount = await _repository.CountAsync(topFilter); } var queryLayer = _queryLayerComposer.Compose(_currentRequest.PrimaryResource); var resources = await _repository.GetAsync(queryLayer); if (_hookExecutor != null) { _hookExecutor.AfterRead(resources, ResourcePipeline.Get); return(_hookExecutor.OnReturn(resources, ResourcePipeline.Get).ToList()); } return(resources); }