mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	refactor notificationsForUser since xorm In support slice of customerize type (#956)
This commit is contained in:
		| @@ -189,23 +189,20 @@ func NotificationsForUser(user *User, statuses []NotificationStatus, page, perPa | |||||||
| 	return notificationsForUser(x, user, statuses, page, perPage) | 	return notificationsForUser(x, user, statuses, page, perPage) | ||||||
| } | } | ||||||
| func notificationsForUser(e Engine, user *User, statuses []NotificationStatus, page, perPage int) (notifications []*Notification, err error) { | 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 | 	if len(statuses) == 0 { | ||||||
| 	s := make([]uint8, len(statuses)) | 		return | ||||||
| 	for i, status := range statuses { |  | ||||||
| 		s[i] = uint8(status) |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	sess := e. | 	sess := e. | ||||||
| 		Where("user_id = ?", user.ID). | 		Where("user_id = ?", user.ID). | ||||||
| 		In("status", s). | 		In("status", statuses). | ||||||
| 		OrderBy("updated_unix DESC") | 		OrderBy("updated_unix DESC") | ||||||
|  |  | ||||||
| 	if page > 0 && perPage > 0 { | 	if page > 0 && perPage > 0 { | ||||||
| 		sess.Limit(perPage, (page-1)*perPage) | 		sess.Limit(perPage, (page-1)*perPage) | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	err = sess. | 	err = sess.Find(¬ifications) | ||||||
| 		Find(¬ifications) |  | ||||||
| 	return | 	return | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										16
									
								
								vendor/github.com/go-xorm/builder/cond_in.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										16
									
								
								vendor/github.com/go-xorm/builder/cond_in.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,6 +6,7 @@ package builder | |||||||
|  |  | ||||||
| import ( | import ( | ||||||
| 	"fmt" | 	"fmt" | ||||||
|  | 	"reflect" | ||||||
| 	"strings" | 	"strings" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| @@ -195,12 +196,27 @@ func (condIn condIn) WriteTo(w Writer) error { | |||||||
| 		if len(condIn.vals) <= 0 { | 		if len(condIn.vals) <= 0 { | ||||||
| 			return ErrNoInConditions | 			return ErrNoInConditions | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		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)) | 			questionMark := strings.Repeat("?,", len(condIn.vals)) | ||||||
| 			if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil { | 			if _, err := fmt.Fprintf(w, "%s IN (%s)", condIn.col, questionMark[:len(questionMark)-1]); err != nil { | ||||||
| 				return err | 				return err | ||||||
| 			} | 			} | ||||||
| 			w.Append(condIn.vals...) | 			w.Append(condIn.vals...) | ||||||
| 		} | 		} | ||||||
|  | 	} | ||||||
| 	return nil | 	return nil | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										6
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/vendor.json
									
									
									
									
										vendored
									
									
								
							| @@ -437,10 +437,10 @@ | |||||||
| 			"revisionTime": "2016-11-01T11:13:14Z" | 			"revisionTime": "2016-11-01T11:13:14Z" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"checksumSHA1": "sDRC697KuCbpI+1i2VPhyqgAvjs=", | 			"checksumSHA1": "Fh6Svimt+QyXHbaVxgSV7qwUHL8=", | ||||||
| 			"path": "github.com/go-xorm/builder", | 			"path": "github.com/go-xorm/builder", | ||||||
| 			"revision": "db75972580de4a7c6c20fff5b16a924c3de3fa12", | 			"revision": "9c357861b643b7dd1023551fdf116b8d42030146", | ||||||
| 			"revisionTime": "2016-12-14T02:05:24Z" | 			"revisionTime": "2017-02-16T03:03:40Z" | ||||||
| 		}, | 		}, | ||||||
| 		{ | 		{ | ||||||
| 			"checksumSHA1": "OCcksAYN5m0kc5yJF/Ba4VVHqeA=", | 			"checksumSHA1": "OCcksAYN5m0kc5yJF/Ba4VVHqeA=", | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Lunny Xiao
					Lunny Xiao