public IActionResult Index() { var viewModel = new DeleteByScoreViewModel() { MaxResults = _defaultMaxResults }; return(View(viewModel)); }
private List <string> LookUpSortedSetKeys(DeleteByScoreViewModel viewModel) { // SHIM // When users pass low (less than 1000) `MaxResults` values the `SelectListScan` method may only return `String` types // In this method we only display `SortedSet` types so this shim will force the code to try find `SortedSet` values var newList = new List <string>(); var keyList = new List <string>(); var maxResultsSoftLimit = viewModel.MaxResults; while (newList.Count < viewModel.MaxResults) { keyList = _redisRepository .SelectListScan(viewModel.SearchOnKey, maxResultsSoftLimit) .ToList(); foreach (var key in keyList) { if (newList.Count >= viewModel.MaxResults) { break; } if (_redisRepository.GetType(key).Equals(RedisType.SortedSet)) { newList.Add(key); } maxResultsSoftLimit++; } if (newList.Count >= viewModel.MaxResults) { break; } // If the code gets this far and this condition is true there are fewer records in redis than the `viewModel.MaxResults` value if (viewModel.MaxResults >= _defaultMaxResults) { break; } newList = new List <string>(); } return(newList); }
public IActionResult Index(DeleteByScoreViewModel viewModel) { if (ModelState.IsValid) { var sortedSetKeys = LookUpSortedSetKeys(viewModel); var sortedSetKeysWithScoresMatching = new List <string>(); foreach (var sortedSetKey in sortedSetKeys) { var sortedSet = _redisRepositorySortedSet.SelectListRecordWithScore(sortedSetKey); foreach (var member in sortedSet) { if (viewModel.ScoreField.Equals("greaterThan") && member.Item1 > viewModel.ScoreFilter) { sortedSetKeysWithScoresMatching.Add(Display(sortedSetKey, member.Item1, member.Item2)); break; } else if (viewModel.ScoreField.Equals("lessThan") && member.Item1 < viewModel.ScoreFilter) { sortedSetKeysWithScoresMatching.Add(Display(sortedSetKey, member.Item1, member.Item2)); break; } } } // Loop through // "<div class='keyResult' data-toggle='modal' data-target='#myModal' data-key='" + key + "'>" + key + "</div>" viewModel.Result = string.Join(Environment.NewLine, sortedSetKeysWithScoresMatching); viewModel.ResultCount = sortedSetKeysWithScoresMatching.Count(); } return(View(viewModel)); }