public async Task <GetPersonCollectionResult> Handle( GetPersonCollectionRequest request, CancellationToken cancellationToken) { await _validator.ValidateAndThrowAsync <GetPersonCollectionResult> (request, null, cancellationToken); List <string> sqlClauses = new List <string> { SqlClauseForQueryingProducts(request), SqlClauseForCountProducts(request) }; string combinedSqlClauses = string.Join("; ", sqlClauses); var parameters = new { Offset = (request.PageIndex - 1) * request.PageSize, request.PageSize, SearchTerm = $"%{request.SearchTerm}%" }; using IDbConnection connection = await _connectionFactory.GetConnection(cancellationToken); SqlMapper.GridReader multiQueries = await connection.QueryMultipleAsync(combinedSqlClauses, parameters); IEnumerable <GetPersonCollectionResult.PersonCollectionItem> people = await multiQueries.ReadAsync <GetPersonCollectionResult.PersonCollectionItem>(); int totalPerson = await multiQueries.ReadFirstOrDefaultAsync <int>(); GetPersonCollectionResult result = new GetPersonCollectionResult { People = people ?? Enumerable.Empty <GetPersonCollectionResult.PersonCollectionItem>(), TotalPerson = totalPerson }; return(result); }
public virtual Task <object> ReadFirstOrDefaultAsync() => _gridReader.ReadFirstOrDefaultAsync();
/// <summary> /// Reads an individual row of the next rest of result. /// </summary> public Task <T> ReadFirstOrDefaultAsync <T>() { return(_reader.ReadFirstOrDefaultAsync <T>()); }