package regionserver

import (
	"encoding/json"
	"fmt"
	"net/url"

	"google.golang.org/protobuf/encoding/protojson"
	"google.golang.org/protobuf/proto"
)

var (
	// marshalOptions is a configurable JSON format marshaller.
	marshalOptions = protojson.MarshalOptions{
		// UseProtoNames:   true,
		EmitUnpopulated: true,
	}
	// unmarshalOptions is a configurable JSON format parser.
	unmarshalOptions = protojson.UnmarshalOptions{
		DiscardUnknown: true,
	}
)

func protobufStructToMap(s proto.Message) (map[string]any, error) {
	b, err := protojson.Marshal(s)
	if err != nil {
		return nil, err
	}
	m := make(map[string]any)
	err = json.Unmarshal(b, &m)
	if err != nil {
		return nil, err
	}
	return m, nil
}

func convertArrayFieldValueToValues(key string, values []any) url.Values {
	result := make([]string, 0)
	for _, value := range values {
		strValue := fmt.Sprintf("%v", value)
		result = append(result, strValue)
	}
	return url.Values{
		key: result,
	}
}
