Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public virtual Task <object> ReadFirstOrDefaultAsync() => _gridReader.ReadFirstOrDefaultAsync();
Esempio n. 3
0
 /// <summary>
 /// Reads an individual row of the next rest of result.
 /// </summary>
 public Task <T> ReadFirstOrDefaultAsync <T>()
 {
     return(_reader.ReadFirstOrDefaultAsync <T>());
 }