github.com/wanlay/gorm-dm8@v1.0.5/clauses/in.go (about) 1 package clauses 2 3 import "gorm.io/gorm/clause" 4 5 // IN Whether a value is within a set of values 6 type IN struct { 7 Column interface{} 8 Values []interface{} 9 } 10 11 func (in IN) Build(builder clause.Builder) { 12 builder.WriteQuoted(in.Column) 13 switch len(in.Values) { 14 case 0: 15 builder.WriteString(" IN (NULL)") 16 case 1: 17 if _, ok := in.Column.([]clause.Column); ok { 18 builder.WriteString(" = (") 19 builder.AddVar(builder, in.Values...) 20 builder.WriteString(")") 21 } else { 22 builder.WriteString(" = ") 23 builder.AddVar(builder, in.Values...) 24 } 25 26 default: 27 builder.WriteString(" IN (") 28 builder.AddVar(builder, in.Values...) 29 builder.WriteByte(')') 30 31 } 32 }