refactor notificationsForUser since xorm In support slice of customerize type (#956)
This commit is contained in:
		
							parent
							
								
									0642cb330c
								
							
						
					
					
						commit
						46320f9630
					
				
					 3 changed files with 27 additions and 14 deletions
				
			
		|  | @ -189,23 +189,20 @@ func NotificationsForUser(user *User, statuses []NotificationStatus, page, perPa | |||
| 	return notificationsForUser(x, user, statuses, page, perPage) | ||||
| } | ||||
| func notificationsForUser(e Engine, user *User, statuses []NotificationStatus, page, perPage int) (notifications []*Notification, err error) { | ||||
| 	// FIXME: Xorm does not support aliases types (like NotificationStatus) on In() method
 | ||||
| 	s := make([]uint8, len(statuses)) | ||||
| 	for i, status := range statuses { | ||||
| 		s[i] = uint8(status) | ||||
| 	if len(statuses) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	sess := e. | ||||
| 		Where("user_id = ?", user.ID). | ||||
| 		In("status", s). | ||||
| 		In("status", statuses). | ||||
| 		OrderBy("updated_unix DESC") | ||||
| 
 | ||||
| 	if page > 0 && perPage > 0 { | ||||
| 		sess.Limit(perPage, (page-1)*perPage) | ||||
| 	} | ||||
| 
 | ||||
| 	err = sess. | ||||
| 		Find(¬ifications) | ||||
| 	err = sess.Find(¬ifications) | ||||
| 	return | ||||
| } | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										24
									
								
								vendor/github.com/go-xorm/builder/cond_in.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										24
									
								
								vendor/github.com/go-xorm/builder/cond_in.go
									
									
									
										generated
									
									
										vendored
									
									
								
							|  | @ -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 | ||||
| } | ||||
|  |  | |||
							
								
								
									
										6
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							|  | @ -437,10 +437,10 @@ | |||
| 			"revisionTime": "2016-11-01T11:13:14Z" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "sDRC697KuCbpI+1i2VPhyqgAvjs=", | ||||
| 			"checksumSHA1": "Fh6Svimt+QyXHbaVxgSV7qwUHL8=", | ||||
| 			"path": "github.com/go-xorm/builder", | ||||
| 			"revision": "db75972580de4a7c6c20fff5b16a924c3de3fa12", | ||||
| 			"revisionTime": "2016-12-14T02:05:24Z" | ||||
| 			"revision": "9c357861b643b7dd1023551fdf116b8d42030146", | ||||
| 			"revisionTime": "2017-02-16T03:03:40Z" | ||||
| 		}, | ||||
| 		{ | ||||
| 			"checksumSHA1": "OCcksAYN5m0kc5yJF/Ba4VVHqeA=", | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue