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 | |
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')
-rw-r--r-- | models/repo/repo.go | 24 | ||||
-rw-r--r-- | models/repo_list.go | 4 |
2 files changed, 26 insertions, 2 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 diff --git a/models/repo_list.go b/models/repo_list.go index 9cb7a163fc..290919bb6d 100644 --- a/models/repo_list.go +++ b/models/repo_list.go @@ -623,7 +623,7 @@ func FindUserAccessibleRepoIDs(user *user_model.User) ([]int64, error) { } // GetUserRepositories returns a list of repositories of given user. -func GetUserRepositories(opts *SearchRepoOptions) ([]*repo_model.Repository, int64, error) { +func GetUserRepositories(opts *SearchRepoOptions) (RepositoryList, int64, error) { if len(opts.OrderBy) == 0 { opts.OrderBy = "updated_unix DESC" } @@ -646,6 +646,6 @@ func GetUserRepositories(opts *SearchRepoOptions) ([]*repo_model.Repository, int } sess = sess.Where(cond).OrderBy(opts.OrderBy.String()) - repos := make([]*repo_model.Repository, 0, opts.PageSize) + repos := make(RepositoryList, 0, opts.PageSize) return repos, count, db.SetSessionPagination(sess, opts).Find(&repos) } |