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 }