Skip to content

Commit e24690d

Browse files
committed
Follow @wxiaoguang's suggestion
1 parent 094df8c commit e24690d

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

models/issues/issue.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@ import (
1010
"html/template"
1111
"regexp"
1212
"slices"
13-
"strconv"
1413

1514
"code.gitea.io/gitea/models/db"
1615
project_model "code.gitea.io/gitea/models/project"
@@ -520,13 +519,12 @@ func FindLatestIssues(ctx context.Context, repoID int64, isPull optional.Option[
520519
return issues, err
521520
}
522521

523-
func FindIssuesSuggestionByKeyword(ctx context.Context, repoID int64, keyword string, isPull optional.Option[bool], pageSize int) (IssueList, error) {
524-
indexKeyword, _ := strconv.ParseInt(keyword, 10, 64)
522+
func FindIssuesSuggestionByKeyword(ctx context.Context, repoID int64, keyword string, isPull optional.Option[bool], nonID int64, pageSize int) (IssueList, error) {
525523
cond := builder.NewCond()
526-
if indexKeyword > 0 {
527-
cond = cond.Or(builder.Eq{"`index`": indexKeyword})
524+
if nonID > 0 {
525+
cond = cond.And(builder.Neq{"`id`": nonID})
528526
}
529-
cond = cond.Or(builder.Expr("name LIKE ?", "%"+keyword+"%"))
527+
cond = cond.And(builder.Expr("name LIKE ?", "%"+keyword+"%"))
530528

531529
issues := make([]*Issue, 0, pageSize)
532530
err := db.GetEngine(ctx).Where("repo_id = ?", repoID).

services/issue/suggestion.go

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ package issue
55

66
import (
77
"context"
8-
"sort"
98
"strconv"
109

1110
issues_model "code.gitea.io/gitea/models/issues"
@@ -24,21 +23,27 @@ func GetSuggestion(ctx context.Context, repo *repo_model.Repository, isPull opti
2423
return nil, err
2524
}
2625
} else {
27-
issues, err = issues_model.FindIssuesSuggestionByKeyword(ctx, repo.ID, keyword, isPull, pageSize)
26+
indexKeyword, _ := strconv.ParseInt(keyword, 10, 64)
27+
var issue *issues_model.Issue
28+
var nonID int64
29+
if indexKeyword > 0 {
30+
issue, err = issues_model.GetIssueByIndex(ctx, repo.ID, indexKeyword)
31+
if err != nil && !issues_model.IsErrIssueNotExist(err) {
32+
return nil, err
33+
}
34+
if issue != nil {
35+
nonID = issue.ID
36+
pageSize--
37+
}
38+
}
39+
40+
issues, err = issues_model.FindIssuesSuggestionByKeyword(ctx, repo.ID, keyword, isPull, nonID, pageSize)
2841
if err != nil {
2942
return nil, err
3043
}
31-
indexKeyword, _ := strconv.ParseInt(keyword, 10, 64)
32-
if indexKeyword > 0 {
33-
sort.Slice(issues, func(i, j int) bool {
34-
if issues[i].Index == indexKeyword {
35-
return true
36-
}
37-
if issues[j].Index == indexKeyword {
38-
return false
39-
}
40-
return issues[i].Index > issues[j].Index
41-
})
44+
45+
if issue != nil {
46+
issues = append([]*issues_model.Issue{issue}, issues...)
4247
}
4348
}
4449

0 commit comments

Comments
 (0)