github.com/artisanhe/tools@v1.0.1-0.20210607022958-19a8fef2eb04/validate/validatetpl/mysql_data_type.go (about)

     1  package validatetpl
     2  
     3  import (
     4  	"regexp"
     5  	"strings"
     6  )
     7  
     8  const (
     9  	InvalidMySQLDataTypeType  = "MySQL数据类型错误"
    10  	InvalidMySQLDataTypeValue = "无效的MySQL数据"
    11  )
    12  
    13  var (
    14  	mysqlDataTypeRegexp = regexp.MustCompile(`^(tinyint\(8\)|smallint\(16\)|int\(32\)|bigint\(64\))( unsigned)?|varchar\(\d+\)$`)
    15  )
    16  
    17  func ValidateMySQLDataType(v interface{}) (bool, string) {
    18  	s, ok := v.(string)
    19  	s = strings.ToLower(s)
    20  	if !ok {
    21  		return false, InvalidMySQLDataTypeType
    22  	}
    23  	if !mysqlDataTypeRegexp.MatchString(s) {
    24  		return false, InvalidMySQLDataTypeValue
    25  	}
    26  	return true, ""
    27  }
    28  
    29  func ValidateMySQLDataTypeOrEmpty(v interface{}) (bool, string) {
    30  	s, ok := v.(string)
    31  	s = strings.ToLower(s)
    32  	if !ok {
    33  		return false, InvalidMySQLDataTypeType
    34  	}
    35  	if s != "" && !mysqlDataTypeRegexp.MatchString(s) {
    36  		return false, InvalidMySQLDataTypeValue
    37  	}
    38  	return true, ""
    39  }