From e30d4ef5da4f008ae1c915e3f9e6734314ca0caa Mon Sep 17 00:00:00 2001 From: Gusted Date: Mon, 25 May 2026 14:55:51 +0200 Subject: [PATCH] chore: refactor loading primary language attribute We can expect it to either not exist or a single primary language to exist. --- models/repo/language_stats.go | 7 ++++++- models/repo/repo.go | 21 ++++++++++----------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/models/repo/language_stats.go b/models/repo/language_stats.go index 1b619c80cc..9ba2fa5818 100644 --- a/models/repo/language_stats.go +++ b/models/repo/language_stats.go @@ -33,13 +33,18 @@ func init() { db.RegisterModel(new(LanguageStat)) } +// LoadAttributes loads attributes +func (stat *LanguageStat) LoadAttributes() { + stat.Color = enry.GetColor(stat.Language) +} + // LanguageStatList defines a list of language statistics type LanguageStatList []*LanguageStat // LoadAttributes loads attributes func (stats LanguageStatList) LoadAttributes() { for i := range stats { - stats[i].Color = enry.GetColor(stats[i].Language) + stats[i].LoadAttributes() } } diff --git a/models/repo/repo.go b/models/repo/repo.go index 1bd779b5a0..fe2879950e 100644 --- a/models/repo/repo.go +++ b/models/repo/repo.go @@ -300,20 +300,19 @@ func (repo *Repository) LoadAttributes(ctx context.Context) error { return fmt.Errorf("load owner: %w", err) } - // Load primary language - stats := make(LanguageStatList, 0, 1) - if err := db.GetEngine(ctx). + // Load the primary language. + var stat LanguageStat + has, 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) + Get(&stat) + if err != nil { + return fmt.Errorf("unable to find the primary languages: %w", repo.ID, err) } - stats.LoadAttributes() - for _, st := range stats { - if st.RepoID == repo.ID { - repo.PrimaryLanguage = st - break - } + if has { + stat.LoadAttributes() + repo.PrimaryLanguage = &stat } + return nil }