github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/courier/enumeration/enum.go (about)

     1  package enumeration
     2  
     3  import (
     4  	//"fmt"
     5  	"strconv"
     6  )
     7  
     8  type EnumOption struct {
     9  	Val   interface{} `json:"val"`
    10  	Value interface{} `json:"value"`
    11  	Label string      `json:"label"`
    12  }
    13  
    14  type Enum []EnumOption
    15  
    16  var EnumMap = map[string]Enum{}
    17  
    18  func RegisterEnums(enumType string, values map[string]string) {
    19  	//if _, ok := EnumMap[enumType]; ok {
    20  	//panic(fmt.Errorf("`%s` is already defined, please make enum unqiue in one service", enumType))
    21  	//}
    22  	for value, label := range values {
    23  		EnumMap[enumType] = append(EnumMap[enumType], EnumOption{Value: value, Label: label})
    24  	}
    25  }
    26  
    27  //@deprecated
    28  func RegisterEnum(enumType string, optionValue string, label string) {
    29  	if _, ok := EnumMap[enumType]; !ok {
    30  		EnumMap[enumType] = []EnumOption{}
    31  	}
    32  	EnumMap[enumType] = append(EnumMap[enumType], EnumOption{Value: optionValue, Label: label})
    33  }
    34  
    35  func GetEnumValueList(enumType string) (enumList []EnumOption, found bool) {
    36  	enumList, found = EnumMap[enumType]
    37  	return
    38  }
    39  
    40  func AsInt64(v interface{}, defaultInteger int64) (int64, error) {
    41  	switch s := v.(type) {
    42  	case []byte:
    43  		if len(s) > 0 {
    44  			i, err := strconv.ParseInt(string(s), 10, 64)
    45  			if err != nil {
    46  				return defaultInteger, err
    47  			}
    48  			return i, err
    49  		}
    50  		return defaultInteger, nil
    51  	case string:
    52  		if s != "" {
    53  			i, err := strconv.ParseInt(s, 10, 64)
    54  			if err != nil {
    55  				return defaultInteger, err
    56  			}
    57  			return i, err
    58  		}
    59  		return defaultInteger, nil
    60  	case int:
    61  		return int64(s), nil
    62  	case int8:
    63  		return int64(s), nil
    64  	case int16:
    65  		return int64(s), nil
    66  	case int32:
    67  		return int64(s), nil
    68  	case int64:
    69  		return int64(s), nil
    70  	case uint:
    71  		return int64(s), nil
    72  	case uint8:
    73  		return int64(s), nil
    74  	case uint16:
    75  		return int64(s), nil
    76  	case uint32:
    77  		return int64(s), nil
    78  	case uint64:
    79  		return int64(s), nil
    80  	case nil:
    81  		return defaultInteger, nil
    82  	default:
    83  		return defaultInteger, nil
    84  	}
    85  }