public async Task <IEnumerable <Vote> > Handle(VoteCountQuery request, CancellationToken cancellationToken) { var entries = await _db.HashGetAllAsync(MapKey(request.SubjectId)); return(entries.Select(e => new Vote { Count = (uint)e.Value, OptionName = e.Name, SubjectId = request.SubjectId })); }
public async Task <IEnumerable <Vote> > Handle(VoteCountQuery request, CancellationToken cancellationToken) { var key = MapKey(request.SubjectId); IEnumerable <HashEntry> entries; if (request.OptionNames == null || !request.OptionNames.Any()) { entries = await _db.HashGetAllAsync(key); } else { var redisOptions = request.OptionNames .Select(o => (RedisValue)o) .ToArray(); var voteValues = await _db.HashGetAsync(key, redisOptions); entries = voteValues.Select((value, index) => new HashEntry(redisOptions[index], value)); } return(ToModel(request.SubjectId, entries)); }