예제 #1
0
 private SqlCommand Get(User.SearchModel model, SqlConnection connection) =>
 connection.CreateProcedureCommand(PROCEDURE)
 .AddPaginationParameters(model)
 .AddInParameter(PARAM_FILTERTEXT, model.FilterText)
 .AddInParameter(PARAM_ISACTIVE, model.IsActive)
 .AddInParameter(PARAM_ISPASSWORDCHANGEREQUIRED, model.IsPasswordChangeRequired)
 .AddIntListParameter(PARAM_SKIPPEDIDS, model.SkippedIds);
예제 #2
0
        public async Task <User.SearchResult> SearchAsync(User.SearchModel model, CancellationToken cancellationToken = default)
        {
            var cacheKey = _cacheHelper.CreateKey <User.SearchModel, User.SearchResult>(model);

            if (TryGetFromCache(cacheKey, out User.SearchResult result))
            {
                return(result);
            }

            using var process = GetProcess <ISearchUser>();
            process.Model     = model;
            return(TrySaveToCache(cacheKey, await process.ExecuteAsync(cancellationToken), _configuration.CacheExpiration.User.Search));
        }
예제 #3
0
        public async Task ExecuteAsync(User.SearchModel model, User.SearchResult result, SqlConnection connection, CancellationToken cancellationToken = default)
        {
            using var command = Get(model, connection);
            using var reader  = await command.ExecuteReaderAsync(cancellationToken);

            if (reader.HasRows)
            {
                while (await reader.ReadAsync(cancellationToken))
                {
                    result.Users.Add(_readerConverter.Convert(reader));
                }
            }

            result.TotalCount = await ReadTotalCountAsync(reader, cancellationToken);
        }
예제 #4
0
 public Task <User.SearchResult> SearchAsync(User.SearchModel model, CancellationToken cancellationToken = default)
 {
     using var process = GetProcess <ISearchUser>();
     process.Model     = model;
     return(process.ExecuteAsync(cancellationToken));
 }