diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2022-12-07 16:16:03 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2022-12-09 13:55:42 +0100 |
| commit | be94e4895a14874a42683e09e433cbdb1d7f81d2 (patch) | |
| tree | ca0145c6c50bcfcf5e287cf7ef26816eb7bcabeb /dashboard | |
| parent | caafa4e63d474f9cecf5197d274defbe27fe51f3 (diff) | |
dashboard: split loadSimilarBugs()
Split loadSimilarBugs() into a UI-facing part and a DB-facing part.
Diffstat (limited to 'dashboard')
| -rw-r--r-- | dashboard/app/entities.go | 26 | ||||
| -rw-r--r-- | dashboard/app/main.go | 43 |
2 files changed, 42 insertions, 27 deletions
diff --git a/dashboard/app/entities.go b/dashboard/app/entities.go index 67b0e5744..c28eccc2d 100644 --- a/dashboard/app/entities.go +++ b/dashboard/app/entities.go @@ -558,6 +558,32 @@ func bugKeyHash(ns, title string, seq int64) string { return hash.String([]byte(fmt.Sprintf("%v-%v-%v-%v", config.Namespaces[ns].Key, ns, title, seq))) } +func loadSimilarBugs(c context.Context, bug *Bug) ([]*Bug, error) { + domain := config.Namespaces[bug.Namespace].SimilarityDomain + dedup := make(map[string]bool) + dedup[bug.keyHash()] = true + + ret := []*Bug{} + for _, title := range bug.AltTitles { + var similar []*Bug + _, err := db.NewQuery("Bug"). + Filter("AltTitles=", title). + GetAll(c, &similar) + if err != nil { + return nil, err + } + for _, bug := range similar { + if config.Namespaces[bug.Namespace].SimilarityDomain != domain || + dedup[bug.keyHash()] { + continue + } + dedup[bug.keyHash()] = true + ret = append(ret, bug) + } + } + return ret, nil +} + // Since these IDs appear in Reported-by tags in commit, we slightly limit their size. const reportingHashLen = 20 diff --git a/dashboard/app/main.go b/dashboard/app/main.go index 348ddf9e5..3787ec644 100644 --- a/dashboard/app/main.go +++ b/dashboard/app/main.go @@ -420,7 +420,7 @@ func handleBug(c context.Context, w http.ResponseWriter, r *http.Request) error if err != nil { return err } - similar, err := loadSimilarBugs(c, r, bug, state) + similar, err := loadSimilarBugsUI(c, r, bug, state) if err != nil { return err } @@ -829,37 +829,26 @@ func loadDupsForBug(c context.Context, r *http.Request, bug *Bug, state *Reporti return group, nil } -func loadSimilarBugs(c context.Context, r *http.Request, bug *Bug, state *ReportingState) (*uiBugGroup, error) { +func loadSimilarBugsUI(c context.Context, r *http.Request, bug *Bug, state *ReportingState) (*uiBugGroup, error) { managers := make(map[string][]string) - var results []*uiBug accessLevel := accessLevel(c, r) - domain := config.Namespaces[bug.Namespace].SimilarityDomain - dedup := make(map[string]bool) - dedup[bug.keyHash()] = true - for _, title := range bug.AltTitles { - var similar []*Bug - _, err := db.NewQuery("Bug"). - Filter("AltTitles=", title). - GetAll(c, &similar) - if err != nil { - return nil, err + similarBugs, err := loadSimilarBugs(c, bug) + if err != nil { + return nil, err + } + var results []*uiBug + for _, similar := range similarBugs { + if accessLevel < similar.sanitizeAccess(accessLevel) { + continue } - for _, similar := range similar { - if accessLevel < similar.sanitizeAccess(accessLevel) || - config.Namespaces[similar.Namespace].SimilarityDomain != domain || - dedup[similar.keyHash()] { - continue - } - dedup[similar.keyHash()] = true - if managers[similar.Namespace] == nil { - mgrs, err := managerList(c, similar.Namespace) - if err != nil { - return nil, err - } - managers[similar.Namespace] = mgrs + if managers[similar.Namespace] == nil { + mgrs, err := managerList(c, similar.Namespace) + if err != nil { + return nil, err } - results = append(results, createUIBug(c, similar, state, managers[similar.Namespace])) + managers[similar.Namespace] = mgrs } + results = append(results, createUIBug(c, similar, state, managers[similar.Namespace])) } group := &uiBugGroup{ Now: timeNow(c), |
