small optimization for get issue labels
This commit is contained in:
parent
3f67676059
commit
d76f34ef51
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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…
Reference in a new issue