func New()

in app/metrics/metrics.go [28:54]


func New(event map[string]interface{}, publishTime time.Time, ackTime time.Time, processingTime time.Duration) (map[string]interface{}, error) {
	sessionEnd, err := avro.GetValue(event, "session_end_time", time.Time{})
	if err != nil {
		return nil, err
	}
	sessionStart, err := avro.GetValue(event, "session_start_time", time.Time{})
	if err != nil {
		return nil, err
	}
	duration := float32(sessionEnd.Sub(sessionStart).Hours())

	return map[string]interface{}{
		"session_id":           event["session_id"],
		"station_id":           event["station_id"],
		"location":             event["location"],
		"event_timestamp":      event["session_end_time"],
		"publish_timestamp":    publishTime.Truncate(time.Microsecond).UTC(),
		"processing_time_sec":  float32(processingTime.Seconds()),
		"ack_timestamp":        ackTime.Truncate(time.Microsecond).UTC(),
		"session_duration_hr":  duration,
		"avg_charge_rate_kw":   event["avg_charge_rate_kw"],
		"battery_capacity_kwh": event["battery_capacity_kwh"],
		"battery_level_start":  event["battery_level_start"],
		"event_node":           event["event_node"],
		"metrics_node":         config.Config.Node,
	}, nil
}