small optimization for get issue labels

release/v1.15
Lunny Xiao 2017-02-11 20:01:33 +08:00 committed by Kim "BKC" Carlbäcker
parent 3f67676059
commit d76f34ef51
2 changed files with 5 additions and 17 deletions

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) var labels []*Label
if err != nil { return labels, e.Where("issue_label.issue_id = ?", issueID).
return nil, fmt.Errorf("getIssueLabels: %v", err) Join("LEFT", "issue_label", "issue_label.label_id = label.id").
} else if len(issueLabels) == 0 { Asc("label.name").
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").
Find(&labels) Find(&labels)
} }

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
} }