// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package hclogutils

import (
	"github.com/hashicorp/terraform-plugin-log/internal/fieldutils"
)

// FieldMapsToArgs will shallow merge field maps into a slice of key/value pairs
// arguments (i.e. `[k1, v1, k2, v2, ...]`) expected by hc-log.Logger methods.
func FieldMapsToArgs(maps ...map[string]interface{}) []interface{} {
	switch len(maps) {
	case 0:
		return nil
	case 1:
		result := make([]interface{}, 0, len(maps[0])*2)

		for k, v := range maps[0] {
			result = append(result, k, v)
		}

		return result
	default:
		// As we merge all maps into one, we can use this
		// same function recursively, falling back on the `switch case 1`.
		return FieldMapsToArgs(fieldutils.MergeFieldMaps(maps...))
	}
}
