summaryrefslogtreecommitdiffstats
path: root/models/repo/repo.go
diff options
context:
space:
mode:
authorLauris BH <lauris@nix.lv>2022-01-25 08:33:40 +0200
committerGitHub <noreply@github.com>2022-01-25 08:33:40 +0200
commit6392f4691af7db20a2ad81ec19408fa9377a5cd1 (patch)
tree0553b384cdde77323b40f8d70daa38ba8d4a5280 /models/repo/repo.go
parent9628a76ce6f4fea8508f79747d78007907e3ea76 (diff)
downloadgitea-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.go24
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