func New()

in app/metrics/complete/metrics/complete.go [25:55]


func New(event map[string]interface{}, publishTime time.Time, ackTime time.Time, processingTime time.Duration) (map[string]interface{}, error) {
	metrics, err := metrics.New(event, publishTime, ackTime, processingTime)
	if err != nil {
		return nil, err
	}
	var float32Zero float32
	levelStart, err := avro.GetValue(metrics, "battery_level_start", float32Zero)
	if err != nil {
		return nil, err
	}
	chargeRate, err := avro.GetValue(metrics, "avg_charge_rate_kw", float32Zero)
	if err != nil {
		return nil, err
	}
	duration, err := avro.GetValue(metrics, "session_duration_hr", float32Zero)
	if err != nil {
		return nil, err
	}
	capacity, err := avro.GetValue(metrics, "battery_capacity_kwh", float32Zero)
	if err != nil {
		return nil, err
	}
	levelEnd := levelStart + (chargeRate * duration / capacity)
	if levelEnd > 1.0 {
		levelEnd = 1.0
	}
	metrics["battery_level_end"] = floatValue(levelEnd)
	metrics["charged_total_kwh"] = floatValue((levelEnd - levelStart) * capacity)

	return metrics, nil
}