package parse

import (
	"encoding/json"
	"strconv"
)

func StringToInt64(val string) int64 {
	result, err := strconv.ParseInt(val, 10, 0)
	if err != nil {
		return -1
	}

	return result
}

func StringToInt(val string) int {
	result, err := strconv.Atoi(val)
	if err != nil {
		return -1
	}

	return result
}

func StringToFloat32(val string) float32 {
	value, err := strconv.ParseFloat(val, 32)
	if err != nil {
		return 0
	}

	return float32(value)
}

func StringPtr(constVal string) *string {
	return &constVal
}

func IntPtr(constVal int) *int {
	return &constVal
}

func StructToMap(data interface{}) (map[string]string, error) {
	str, err := json.Marshal(data)
	if err != nil {
		return nil, err
	}

	resultMap := map[string]string{}
	err = json.Unmarshal(str, &resultMap)
	if err != nil {
		return nil, err
	}

	return resultMap, nil
}

// func StructToMapKK(data interface{}) (kk.H, error) {
// 	str, err := jsoniter.Marshal(data)
// 	if err != nil {
// 		return nil, err
// 	}

// 	resultMap := kk.H{}
// 	err = jsoniter.Unmarshal(str, &resultMap)
// 	if err != nil {
// 		return nil, err
// 	}

// 	return resultMap, nil
// }

// func MapToStruct(mapData interface{}, instance interface{}) error {
// 	str, err := json.Marshal(mapData)
// 	if err != nil {
// 		return err
// 	}

// 	err = json.Unmarshal(str, instance)
// 	if err != nil {
// 		return err
// 	}

// 	return nil
// }
