@@ -1128,11 +1128,8 @@ func Issues(opts *IssuesOptions) ([]*Issue, error) {
11281128 return nil , fmt .Errorf ("Find: %v" , err )
11291129 }
11301130
1131- // FIXME: use IssueList to improve performance.
1132- for i := range issues {
1133- if err := issues [i ].LoadAttributes (); err != nil {
1134- return nil , fmt .Errorf ("LoadAttributes [%d]: %v" , issues [i ].ID , err )
1135- }
1131+ if err := IssueList (issues ).LoadAttributes (); err != nil {
1132+ return nil , fmt .Errorf ("LoadAttributes: %v" , err )
11361133 }
11371134
11381135 return issues , nil
@@ -1399,62 +1396,3 @@ func updateIssue(e Engine, issue *Issue) error {
13991396func UpdateIssue (issue * Issue ) error {
14001397 return updateIssue (x , issue )
14011398}
1402-
1403- // IssueList defines a list of issues
1404- type IssueList []* Issue
1405-
1406- func (issues IssueList ) getRepoIDs () []int64 {
1407- repoIDs := make ([]int64 , 0 , len (issues ))
1408- for _ , issue := range issues {
1409- var has bool
1410- for _ , repoID := range repoIDs {
1411- if repoID == issue .RepoID {
1412- has = true
1413- break
1414- }
1415- }
1416- if ! has {
1417- repoIDs = append (repoIDs , issue .RepoID )
1418- }
1419- }
1420- return repoIDs
1421- }
1422-
1423- func (issues IssueList ) loadRepositories (e Engine ) ([]* Repository , error ) {
1424- if len (issues ) == 0 {
1425- return nil , nil
1426- }
1427-
1428- repoIDs := issues .getRepoIDs ()
1429- rows , err := e .
1430- Where ("id > 0" ).
1431- In ("id" , repoIDs ).
1432- Rows (new (Repository ))
1433- if err != nil {
1434- return nil , fmt .Errorf ("find repository: %v" , err )
1435- }
1436- defer rows .Close ()
1437-
1438- repositories := make ([]* Repository , 0 , len (repoIDs ))
1439- repoMaps := make (map [int64 ]* Repository , len (repoIDs ))
1440- for rows .Next () {
1441- var repo Repository
1442- err = rows .Scan (& repo )
1443- if err != nil {
1444- return nil , fmt .Errorf ("find repository: %v" , err )
1445- }
1446-
1447- repositories = append (repositories , & repo )
1448- repoMaps [repo .ID ] = & repo
1449- }
1450-
1451- for _ , issue := range issues {
1452- issue .Repo = repoMaps [issue .RepoID ]
1453- }
1454- return repositories , nil
1455- }
1456-
1457- // LoadRepositories loads issues' all repositories
1458- func (issues IssueList ) LoadRepositories () ([]* Repository , error ) {
1459- return issues .loadRepositories (x )
1460- }
0 commit comments