in src/main/scala/com/gu/mobile/content/notifications/metrics/MetricsActor.scala [36:57]
def aggregatePointsPerMetric(metricPoints: List[MetricDataPoint], metricName: String): MetricDatum = {
val (sum, min, max) = metricPoints.foldLeft((0d, Double.MaxValue, Double.MinValue)) {
case ((aggSum, aggMin, aggMax), dataPoint) =>
(aggSum + dataPoint.value, aggMin.min(dataPoint.value), aggMax.max(dataPoint.value))
}
val statSet = new StatisticSet
statSet.setMaximum(max)
statSet.setMinimum(min)
statSet.setSum(sum)
statSet.setSampleCount(metricPoints.size.toDouble)
val unit = metricPoints.headOption.map(_.unit).getOrElse(StandardUnit.None)
val metric = new MetricDatum()
metric.setMetricName(metricName)
metric.setUnit(unit)
metric.setStatisticValues(statSet)
metric
}