diff options
author | Lauris BH <lauris@nix.lv> | 2022-01-25 08:33:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-25 08:33:40 +0200 |
commit | 6392f4691af7db20a2ad81ec19408fa9377a5cd1 (patch) | |
tree | 0553b384cdde77323b40f8d70daa38ba8d4a5280 /models/repo/repo.go | |
parent | 9628a76ce6f4fea8508f79747d78007907e3ea76 (diff) | |
download | gitea-6392f4691af7db20a2ad81ec19408fa9377a5cd1.tar.gz gitea-6392f4691af7db20a2ad81ec19408fa9377a5cd1.zip |
API: Return primary language and repository language stats API URL (#18396)
Diffstat (limited to 'models/repo/repo.go')
-rw-r--r-- | models/repo/repo.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/models/repo/repo.go b/models/repo/repo.go index a78d287315..353d707e60 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -222,6 +222,30 @@ func (repo *Repository) MustOwner() *user_model.User { return repo.mustOwner(db.DefaultContext) } +// LoadAttributes loads attributes of the repository. +func (repo *Repository) LoadAttributes(ctx context.Context) error { + // Load owner + if err := repo.GetOwner(ctx); err != nil { + return fmt.Errorf("load owner: %w", err) + } + + // Load primary language + stats := make(LanguageStatList, 0, 1) + if err := db.GetEngine(ctx). + Where("`repo_id` = ? AND `is_primary` = ? AND `language` != ?", repo.ID, true, "other"). + Find(&stats); err != nil { + return fmt.Errorf("find primary languages: %w", err) + } + stats.LoadAttributes() + for _, st := range stats { + if st.RepoID == repo.ID { + repo.PrimaryLanguage = st + break + } + } + return nil +} + // FullName returns the repository full name func (repo *Repository) FullName() string { return repo.OwnerName + "/" + repo.Name |