package datasource

import (
	"strconv"

	"github.com/pkg/errors"
)

func GetFloatValue(valueTuple []interface{}) (float64, error) {
	if len(valueTuple) != 2 {
		return 0, errors.Errorf("failed to query value(%+v)", valueTuple)
	}
	// valueTuple[0] is the timestamp.
	valueStr, ok := valueTuple[1].(string)
	if !ok {
		return 0, errors.Errorf("failed to convert value(%+v)", valueTuple)
	}
	value, err := strconv.ParseFloat(valueStr, 64)
	if err != nil {
		return 0, errors.Errorf("failed to parse value(%s)", valueStr)
	}

	return value, nil
}

func GetIntValue(valueTuple []interface{}) (int64, error) {
	if len(valueTuple) != 2 {
		return 0, errors.Errorf("failed to query value(%+v)", valueTuple)
	}
	// valueTuple[0] is the timestamp.
	valueStr, ok := valueTuple[1].(string)
	if !ok {
		return 0, errors.Errorf("failed to convert value(%+v)", valueTuple)
	}
	value, err := strconv.ParseInt(valueStr, 10, 64)
	if err != nil {
		return 0, errors.Errorf("failed to parse value(%s)", valueStr)
	}

	return value, nil
}
