Browse Source

implemet Cache for Stopwatches.APIFormat() (#12730)

Co-authored-by: techknowlogick <techknowlogick@gitea.io>
for-closed-social
6543 3 years ago
committed by GitHub
parent
commit
1c35353c53
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 31 additions and 4 deletions
  1. +31
    -4
      models/issue_stopwatch.go

+ 31
- 4
models/issue_stopwatch.go View File

@ -216,12 +216,39 @@ func (sw *Stopwatch) APIFormat() (api.StopWatch, error) {
// APIFormat convert Stopwatches type to api.StopWatches type
func (sws Stopwatches) APIFormat() (api.StopWatches, error) {
result := api.StopWatches(make([]api.StopWatch, 0, len(sws)))
issueCache := make(map[int64]*Issue)
repoCache := make(map[int64]*Repository)
var (
issue *Issue
repo *Repository
ok bool
err error
)
for _, sw := range sws {
apiSW, err := sw.APIFormat()
if err != nil {
return nil, err
issue, ok = issueCache[sw.IssueID]
if !ok {
issue, err = GetIssueByID(sw.IssueID)
if err != nil {
return nil, err
}
}
result = append(result, apiSW)
repo, ok = repoCache[issue.RepoID]
if !ok {
repo, err = GetRepositoryByID(issue.RepoID)
if err != nil {
return nil, err
}
}
result = append(result, api.StopWatch{
Created: sw.CreatedUnix.AsTime(),
IssueIndex: issue.Index,
IssueTitle: issue.Title,
RepoOwnerName: repo.OwnerName,
RepoName: repo.Name,
})
}
return result, nil
}

Loading…
Cancel
Save