mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 11:28:24 +00:00 
			
		
		
		
	Modify milestone search keywords to be case insensitive again (#20513)
Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: delvh <dev.lh@web.de>
This commit is contained in:
		
							
								
								
									
										23
									
								
								models/db/common.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								models/db/common.go
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| // Copyright 2022 The Gitea Authors. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
|  | ||||
| package db | ||||
|  | ||||
| import ( | ||||
| 	"strings" | ||||
|  | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
|  | ||||
| 	"xorm.io/builder" | ||||
| ) | ||||
|  | ||||
| // BuildCaseInsensitiveLike returns a condition to check if the given value is like the given key case-insensitively. | ||||
| // Handles especially SQLite correctly as UPPER there only transforms ASCII letters. | ||||
| func BuildCaseInsensitiveLike(key, value string) builder.Cond { | ||||
| 	if setting.Database.UseSQLite3 { | ||||
| 		return builder.Like{"UPPER(" + key + ")", util.ToUpperASCII(value)} | ||||
| 	} | ||||
| 	return builder.Like{"UPPER(" + key + ")", strings.ToUpper(value)} | ||||
| } | ||||
| @@ -27,7 +27,6 @@ import ( | ||||
| 	"code.gitea.io/gitea/modules/git" | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| 	"code.gitea.io/gitea/modules/references" | ||||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| 	api "code.gitea.io/gitea/modules/structs" | ||||
| 	"code.gitea.io/gitea/modules/timeutil" | ||||
| 	"code.gitea.io/gitea/modules/util" | ||||
| @@ -1903,23 +1902,17 @@ func GetRepoIssueStats(repoID, uid int64, filterMode int, isPull bool) (numOpen, | ||||
| func SearchIssueIDsByKeyword(ctx context.Context, kw string, repoIDs []int64, limit, start int) (int64, []int64, error) { | ||||
| 	repoCond := builder.In("repo_id", repoIDs) | ||||
| 	subQuery := builder.Select("id").From("issue").Where(repoCond) | ||||
| 	// SQLite's UPPER function only transforms ASCII letters. | ||||
| 	if setting.Database.UseSQLite3 { | ||||
| 		kw = util.ToUpperASCII(kw) | ||||
| 	} else { | ||||
| 		kw = strings.ToUpper(kw) | ||||
| 	} | ||||
| 	cond := builder.And( | ||||
| 		repoCond, | ||||
| 		builder.Or( | ||||
| 			builder.Like{"UPPER(name)", kw}, | ||||
| 			builder.Like{"UPPER(content)", kw}, | ||||
| 			db.BuildCaseInsensitiveLike("name", kw), | ||||
| 			db.BuildCaseInsensitiveLike("content", kw), | ||||
| 			builder.In("id", builder.Select("issue_id"). | ||||
| 				From("comment"). | ||||
| 				Where(builder.And( | ||||
| 					builder.Eq{"type": CommentTypeComment}, | ||||
| 					builder.In("issue_id", subQuery), | ||||
| 					builder.Like{"UPPER(content)", kw}, | ||||
| 					db.BuildCaseInsensitiveLike("content", kw), | ||||
| 				)), | ||||
| 			), | ||||
| 		), | ||||
|   | ||||
| @@ -361,7 +361,7 @@ func (opts GetMilestonesOption) toCond() builder.Cond { | ||||
| 	} | ||||
|  | ||||
| 	if len(opts.Name) != 0 { | ||||
| 		cond = cond.And(builder.Like{"UPPER(name)", strings.ToUpper(opts.Name)}) | ||||
| 		cond = cond.And(db.BuildCaseInsensitiveLike("name", opts.Name)) | ||||
| 	} | ||||
|  | ||||
| 	return cond | ||||
|   | ||||
		Reference in New Issue
	
	Block a user