func compactDataStreamVariables()

in dev/import-beats/variables_compact.go [16:43]


func compactDataStreamVariables(dataStreams dataStreamContentArray) (dataStreamContentArray, map[string][]packages.Variable, error) { // map[inputType][]util.Variable
	varsPerInputType := map[string][]packages.Variable{}
	var compacted dataStreamContentArray

	for _, dataStream := range dataStreams {
		for i, stream := range dataStream.manifest.Streams {
			var notCompactedVars []packages.Variable
			for _, aVar := range stream.Vars {
				isAlreadyCompacted := isVariableAlreadyCompacted(varsPerInputType, aVar, stream.Input)
				if !isAlreadyCompacted {
					canBeCompacted, err := canVariableBeCompacted(dataStreams, aVar, stream.Input)
					if err != nil {
						return nil, nil, errors.Wrap(err, "checking compactibility failed")
					}
					if canBeCompacted {
						varsPerInputType[stream.Input] = append(varsPerInputType[stream.Input], aVar)
					} else {
						notCompactedVars = append(notCompactedVars, aVar)
					}
				}
			}
			stream.Vars = notCompactedVars
			dataStream.manifest.Streams[i] = stream
		}
		compacted = append(compacted, dataStream)
	}
	return compacted, varsPerInputType, nil
}