1
// Copyright 2016 The Xorm Authors. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
15
var _ Cond = condNotIn{}
17
// NotIn generate NOT IN condition
18
func NotIn(col string, values ...interface{}) Cond {
19
return condNotIn{col, values}
22
func (condNotIn condNotIn) handleBlank(w Writer) error {
23
if _, err := fmt.Fprintf(w, "%s NOT IN ()", condNotIn.col); err != nil {
29
func (condNotIn condNotIn) WriteTo(w Writer) error {
30
if len(condNotIn.vals) <= 0 {
31
return condNotIn.handleBlank(w)
34
switch condNotIn.vals[0].(type) {
36
vals := condNotIn.vals[0].([]int8)
38
return condNotIn.handleBlank(w)
40
questionMark := strings.Repeat("?,", len(vals))
41
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
44
for _, val := range vals {
48
vals := condNotIn.vals[0].([]int16)
50
return condNotIn.handleBlank(w)
52
questionMark := strings.Repeat("?,", len(vals))
53
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
56
for _, val := range vals {
60
vals := condNotIn.vals[0].([]int)
62
return condNotIn.handleBlank(w)
64
questionMark := strings.Repeat("?,", len(vals))
65
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
68
for _, val := range vals {
72
vals := condNotIn.vals[0].([]int32)
74
return condNotIn.handleBlank(w)
76
questionMark := strings.Repeat("?,", len(vals))
77
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
80
for _, val := range vals {
84
vals := condNotIn.vals[0].([]int64)
86
return condNotIn.handleBlank(w)
88
questionMark := strings.Repeat("?,", len(vals))
89
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
92
for _, val := range vals {
96
vals := condNotIn.vals[0].([]uint8)
98
return condNotIn.handleBlank(w)
100
questionMark := strings.Repeat("?,", len(vals))
101
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
104
for _, val := range vals {
108
vals := condNotIn.vals[0].([]uint16)
110
return condNotIn.handleBlank(w)
112
questionMark := strings.Repeat("?,", len(vals))
113
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
116
for _, val := range vals {
120
vals := condNotIn.vals[0].([]uint)
122
return condNotIn.handleBlank(w)
124
questionMark := strings.Repeat("?,", len(vals))
125
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
128
for _, val := range vals {
132
vals := condNotIn.vals[0].([]uint32)
134
return condNotIn.handleBlank(w)
136
questionMark := strings.Repeat("?,", len(vals))
137
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
140
for _, val := range vals {
144
vals := condNotIn.vals[0].([]uint64)
146
return condNotIn.handleBlank(w)
148
questionMark := strings.Repeat("?,", len(vals))
149
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
152
for _, val := range vals {
156
vals := condNotIn.vals[0].([]string)
158
return condNotIn.handleBlank(w)
160
questionMark := strings.Repeat("?,", len(vals))
161
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
164
for _, val := range vals {
168
vals := condNotIn.vals[0].([]interface{})
170
return condNotIn.handleBlank(w)
172
questionMark := strings.Repeat("?,", len(vals))
173
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
178
val := condNotIn.vals[0].(expr)
179
if _, err := fmt.Fprintf(w, "%s NOT IN (", condNotIn.col); err != nil {
182
if err := val.WriteTo(w); err != nil {
185
if _, err := fmt.Fprintf(w, ")"); err != nil {
189
val := condNotIn.vals[0].(*Builder)
190
if _, err := fmt.Fprintf(w, "%s NOT IN (", condNotIn.col); err != nil {
193
if err := val.WriteTo(w); err != nil {
196
if _, err := fmt.Fprintf(w, ")"); err != nil {
200
v := reflect.ValueOf(condNotIn.vals[0])
201
if v.Kind() == reflect.Slice {
204
return condNotIn.handleBlank(w)
207
questionMark := strings.Repeat("?,", l)
208
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
212
for i := 0; i < l; i++ {
213
w.Append(v.Index(i).Interface())
216
questionMark := strings.Repeat("?,", len(condNotIn.vals))
217
if _, err := fmt.Fprintf(w, "%s NOT IN (%s)", condNotIn.col, questionMark[:len(questionMark)-1]); err != nil {
220
w.Append(condNotIn.vals...)
226
func (condNotIn condNotIn) And(conds ...Cond) Cond {
227
return And(condNotIn, And(conds...))
230
func (condNotIn condNotIn) Or(conds ...Cond) Cond {
231
return Or(condNotIn, Or(conds...))
234
func (condNotIn condNotIn) IsValid() bool {
235
return len(condNotIn.col) > 0 && len(condNotIn.vals) > 0