package map2struct

import (
	"github.com/mitchellh/mapstructure"
)

func WeakDecode(input, output interface{}) error {
	config := &mapstructure.DecoderConfig{
		Metadata:         nil,
		Result:           output,
		WeaklyTypedInput: true,
		DecodeHook: mapstructure.ComposeDecodeHookFunc(
			ToDecimalHookFunc(), ToTimeHookFunc(), ToNullableStringHookFunc(),
			ToTimePtrHookFunc(),
		),
		TagName: "json",
	}

	decoder, err := mapstructure.NewDecoder(config)
	if err != nil {
		return err
	}

	return decoder.Decode(input)
}
