package diffstore

import (
	"encoding/json"

	"go.skia.org/infra/golden/go/diff"
	"go.skia.org/infra/golden/go/types"
)

// MetricMapCodec implements the util.LRUCodec interface by serializing and
// deserializing generic diff result structs, instances of map[string]interface{}
type MetricMapCodec struct{}

// See util.LRUCodec interface
func (m MetricMapCodec) Encode(data interface{}) ([]byte, error) {
	return json.Marshal(data)
}

// See util.LRUCodec interface
func (m MetricMapCodec) Decode(byteData []byte) (interface{}, error) {
	dm := map[types.Digest]*diff.DiffMetrics{}
	err := json.Unmarshal(byteData, &dm)
	if err != nil {
		return nil, err
	}

	// Must make result of deserialization generic in order to propagate
	ret := make(map[types.Digest]interface{}, len(dm))
	for k, metric := range dm {
		ret[k] = metric
	}
	return ret, nil
}
