diff --git a/appview/db/repos.go b/appview/db/repos.go --- a/appview/db/repos.go +++ b/appview/db/repos.go @@ -22,6 +22,7 @@ Rkey string Created time.Time Description string Spindle string + Labels []string // optionally, populate this when querying for reverse mappings RepoStats *RepoStats @@ -155,6 +156,29 @@ i := 0 for _, r := range repoMap { args[i] = r.RepoAt() i++ + } + + // Get labels for all repos + labelsQuery := fmt.Sprintf( + `select repo_at, label_at from repo_labels where repo_at in (%s)`, + inClause, + ) + rows, err = e.Query(labelsQuery, args...) + if err != nil { + return nil, fmt.Errorf("failed to execute labels query: %w ", err) + } + for rows.Next() { + var repoat, labelat string + if err := rows.Scan(&repoat, &labelat); err != nil { + log.Println("err", "err", err) + continue + } + if r, ok := repoMap[syntax.ATURI(repoat)]; ok { + r.Labels = append(r.Labels, labelat) + } + } + if err = rows.Err(); err != nil { + return nil, fmt.Errorf("failed to execute labels query: %w ", err) } languageQuery := fmt.Sprintf( diff --git a/appview/pages/pages.go b/appview/pages/pages.go --- a/appview/pages/pages.go +++ b/appview/pages/pages.go @@ -840,6 +840,7 @@ type RepoGeneralSettingsParams struct { LoggedInUser *oauth.User RepoInfo repoinfo.RepoInfo + Labels []db.LabelDefinition Active string Tabs []map[string]any Tab string diff --git a/appview/pages/templates/repo/settings/fragments/labelListing.html b/appview/pages/templates/repo/settings/fragments/labelListing.html new file mode 100644 --- /dev/null +++ b/appview/pages/templates/repo/settings/fragments/labelListing.html @@ -0,0 +1,28 @@ +{{ define "repo/settings/fragments/labelListing" }} + {{ $root := index . 0 }} + {{ $label := index . 1 }} +
+ Manage your issues and pulls by creating labels to categorize them. + Only repository owners may configure labels. +
+