ParseCheckConstraints parse schema check constraints
()
| 24 | |
| 25 | // ParseCheckConstraints parse schema check constraints |
| 26 | func (schema *Schema) ParseCheckConstraints() map[string]CheckConstraint { |
| 27 | checks := map[string]CheckConstraint{} |
| 28 | for _, field := range schema.FieldsByDBName { |
| 29 | if chk := field.TagSettings["CHECK"]; chk != "" { |
| 30 | names := strings.Split(chk, ",") |
| 31 | if len(names) > 1 && regEnLetterAndMidline.MatchString(names[0]) { |
| 32 | checks[names[0]] = CheckConstraint{Name: names[0], Constraint: strings.Join(names[1:], ","), Field: field} |
| 33 | } else { |
| 34 | if names[0] == "" { |
| 35 | chk = strings.Join(names[1:], ",") |
| 36 | } |
| 37 | name := schema.namer.CheckerName(schema.Table, field.DBName) |
| 38 | checks[name] = CheckConstraint{Name: name, Constraint: chk, Field: field} |
| 39 | } |
| 40 | } |
| 41 | } |
| 42 | return checks |
| 43 | } |
| 44 | |
| 45 | type UniqueConstraint struct { |
| 46 | Name string |