public virtual async Task <long[]> Counts(
string eventName,
DateTime startTimestamp,
DateTime endTimestamp,
ActivityDrilldown drilldown)
{
Validation.ValidateEventName(eventName);
var dates = startTimestamp.Range(endTimestamp, drilldown);
var key = GenerateKey(eventName, drilldown.ToString());
var fields = dates.Select(d =>
GenerateTimeframeFields(drilldown, d)
.ElementAt((int)drilldown))
.ToArray();
string[] values;
using (var connection = await ConnectionFactories.Open())
{
values = await connection.Hashes.GetString(
Settings.Db,
key,
fields);
}
var result = values.Select(v =>
string.IsNullOrWhiteSpace(v) ? 0L : long.Parse(v))
.ToArray();
return(result);
}