Browse Source

small optimization for get issue labels

for-closed-social
Lunny Xiao 7 years ago
committed by Kim "BKC" Carlbäcker
parent
commit
d76f34ef51
2 changed files with 5 additions and 17 deletions
  1. +4
    -17
      models/issue_label.go
  2. +1
    -0
      models/models.go

+ 4
- 17
models/issue_label.go View File

@ -190,23 +190,10 @@ func GetLabelsByRepoID(repoID int64, sortType string) ([]*Label, error) {
} }
func getLabelsByIssueID(e Engine, issueID int64) ([]*Label, error) { func getLabelsByIssueID(e Engine, issueID int64) ([]*Label, error) {
issueLabels, err := getIssueLabels(e, issueID)
if err != nil {
return nil, fmt.Errorf("getIssueLabels: %v", err)
} else if len(issueLabels) == 0 {
return []*Label{}, nil
}
labelIDs := make([]int64, len(issueLabels))
for i := range issueLabels {
labelIDs[i] = issueLabels[i].LabelID
}
labels := make([]*Label, 0, len(labelIDs))
return labels, e.
Where("id > 0").
In("id", labelIDs).
Asc("name").
var labels []*Label
return labels, e.Where("issue_label.issue_id = ?", issueID).
Join("LEFT", "issue_label", "issue_label.label_id = label.id").
Asc("label.name").
Find(&labels) Find(&labels)
} }

+ 1
- 0
models/models.go View File

@ -42,6 +42,7 @@ type Engine interface {
Insert(...interface{}) (int64, error) Insert(...interface{}) (int64, error)
InsertOne(interface{}) (int64, error) InsertOne(interface{}) (int64, error)
Iterate(interface{}, xorm.IterFunc) error Iterate(interface{}, xorm.IterFunc) error
Join(joinOperator string, tablename interface{}, condition string, args ...interface{}) *xorm.Session
SQL(interface{}, ...interface{}) *xorm.Session SQL(interface{}, ...interface{}) *xorm.Session
Where(interface{}, ...interface{}) *xorm.Session Where(interface{}, ...interface{}) *xorm.Session
} }

Loading…
Cancel
Save