package mathutils

import (
	"strconv"

	"github.com/pingcap/dbaas/billing2/billing_errors"
)

type OperatorFunc func(string, string) (bool, error)

func Lte(leftString string, rightString string) (bool, error) {
	left, err := strconv.Atoi(leftString)
	if err != nil {
		return false, billing_errors.NewInvalidInputError(err)
	}
	right, err := strconv.Atoi(rightString)
	if err != nil {
		return false, billing_errors.NewInvalidInputError(err)
	}
	return left <= right, nil
}

func Gte(leftString string, rightString string) (bool, error) {
	left, err := strconv.Atoi(leftString)
	if err != nil {
		return false, billing_errors.NewInvalidInputError(err)
	}
	right, err := strconv.Atoi(rightString)
	if err != nil {
		return false, billing_errors.NewInvalidInputError(err)
	}
	return left >= right, nil
}

func Equal(leftString string, rightString string) (bool, error) {
	return leftString == rightString, nil
}

var OperatorFuncMap = map[string]OperatorFunc{
	"<=": Lte,
	">=": Gte,
	"==": Equal,
}
