mirror of https://github.com/go-gorm/gorm.git
optimization check for ParseCheckConstraints (#4063)
This commit is contained in:
parent
ef5ef18d4a
commit
e80853e7f5
|
@ -5,6 +5,11 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// match English letters and midline
|
||||||
|
regEnLetterAndmidline = regexp.MustCompile("^[A-Za-z-_]+$")
|
||||||
|
)
|
||||||
|
|
||||||
type Check struct {
|
type Check struct {
|
||||||
Name string
|
Name string
|
||||||
Constraint string // length(phone) >= 10
|
Constraint string // length(phone) >= 10
|
||||||
|
@ -17,7 +22,7 @@ func (schema *Schema) ParseCheckConstraints() map[string]Check {
|
||||||
for _, field := range schema.FieldsByDBName {
|
for _, field := range schema.FieldsByDBName {
|
||||||
if chk := field.TagSettings["CHECK"]; chk != "" {
|
if chk := field.TagSettings["CHECK"]; chk != "" {
|
||||||
names := strings.Split(chk, ",")
|
names := strings.Split(chk, ",")
|
||||||
if len(names) > 1 && regexp.MustCompile("^[A-Za-z-_]+$").MatchString(names[0]) {
|
if len(names) > 1 && regEnLetterAndmidline.MatchString(names[0]) {
|
||||||
checks[names[0]] = Check{Name: names[0], Constraint: strings.Join(names[1:], ","), Field: field}
|
checks[names[0]] = Check{Name: names[0], Constraint: strings.Join(names[1:], ","), Field: field}
|
||||||
} else {
|
} else {
|
||||||
if names[0] == "" {
|
if names[0] == "" {
|
||||||
|
|
Loading…
Reference in New Issue