mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2025-08-04 10:16:47 +02:00
API: Return primary language and repository language stats API URL (#18396)
This commit is contained in:
parent
9628a76ce6
commit
6392f4691a
7 changed files with 55 additions and 2 deletions
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue