diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-02-16 12:07:00 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-16 12:07:00 +0800 |
commit | 46320f9630087e010a31ab580294cc9137eb865f (patch) | |
tree | 99997f1335e1f6ee2963045fb90462322e44f155 /vendor/github.com/go-xorm | |
parent | 0642cb330cbdb58632d6b7b5831200ff339bba8a (diff) | |
download | gitea-46320f9630087e010a31ab580294cc9137eb865f.tar.gz gitea-46320f9630087e010a31ab580294cc9137eb865f.zip |
refactor notificationsForUser since xorm In support slice of customerize type (#956)
Diffstat (limited to 'vendor/github.com/go-xorm')
-rw-r--r-- | vendor/github.com/go-xorm/builder/cond_in.go | 24 |
1 files changed, 20 insertions, 4 deletions
diff --git a/vendor/github.com/go-xorm/builder/cond_in.go b/vendor/github.com/go-xorm/builder/cond_in.go index 9ada13b700..692d2e289a 100644 --- a/vendor/github.com/go-xorm/builder/cond_in.go +++ b/vendor/github.com/go-xorm/builder/cond_in.go @@ -6,6 +6,7 @@ package builder import ( "fmt" + "reflect" "strings" ) @@ -195,11 +196,26 @@ func (condIn condIn) WriteTo(w Writer) error { if len(condIn.vals) <= 0 { return ErrNoInConditions } - questionMark := strings.Repeat("?,", len(condIn.vals)) - if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil { - return err + + v := reflect.ValueOf(condIn.vals[0]) + if v.Kind() == reflect.Slice { + l := v.Len() + + questionMark := strings.Repeat("?,", l) + if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil { + return err + } + + for i := 0; i < l; i++ { + w.Append(v.Index(i).Interface()) + } + } else { + questionMark := strings.Repeat("?,", len(condIn.vals)) + if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil { + return err + } + w.Append(condIn.vals...) } - w.Append(condIn.vals...) } return nil } |