forked from tangled.org/core
this repo has no description

appview: store default ref info in languages table

Signed-off-by: oppiliappan <me@oppi.li>

oppi.li ffaadd3d 1764a690

verified
Changed files
+35 -17
appview
+1
appview/db/db.go
··· 428 -- repo identifiers 429 repo_at text not null, 430 ref text not null, 431 432 -- language breakdown 433 language text not null,
··· 428 -- repo identifiers 429 repo_at text not null, 430 ref text not null, 431 + is_default_ref integer not null default 0, 432 433 -- language breakdown 434 language text not null,
+20 -8
appview/db/language.go
··· 8 ) 9 10 type RepoLanguage struct { 11 - Id int64 12 - RepoAt syntax.ATURI 13 - Ref string 14 - Language string 15 - Bytes int64 16 } 17 18 func GetRepoLanguages(e Execer, filters ...filter) ([]RepoLanguage, error) { ··· 29 } 30 31 query := fmt.Sprintf( 32 - `select id, repo_at, ref, language, bytes from repo_languages %s`, 33 whereClause, 34 ) 35 rows, err := e.Query(query, args...) ··· 41 var langs []RepoLanguage 42 for rows.Next() { 43 var rl RepoLanguage 44 45 err := rows.Scan( 46 &rl.Id, 47 &rl.RepoAt, 48 &rl.Ref, 49 &rl.Language, 50 &rl.Bytes, 51 ) 52 if err != nil { 53 return nil, fmt.Errorf("failed to scan: %w ", err) 54 } 55 56 langs = append(langs, rl) ··· 64 65 func InsertRepoLanguages(e Execer, langs []RepoLanguage) error { 66 stmt, err := e.Prepare( 67 - "insert or replace into repo_languages (repo_at, ref, language, bytes) values (?, ?, ?, ?)", 68 ) 69 if err != nil { 70 return err 71 } 72 73 for _, l := range langs { 74 - _, err := stmt.Exec(l.RepoAt, l.Ref, l.Language, l.Bytes) 75 if err != nil { 76 return err 77 }
··· 8 ) 9 10 type RepoLanguage struct { 11 + Id int64 12 + RepoAt syntax.ATURI 13 + Ref string 14 + IsDefaultRef bool 15 + Language string 16 + Bytes int64 17 } 18 19 func GetRepoLanguages(e Execer, filters ...filter) ([]RepoLanguage, error) { ··· 30 } 31 32 query := fmt.Sprintf( 33 + `select id, repo_at, ref, is_default_ref, language, bytes from repo_languages %s`, 34 whereClause, 35 ) 36 rows, err := e.Query(query, args...) ··· 42 var langs []RepoLanguage 43 for rows.Next() { 44 var rl RepoLanguage 45 + var isDefaultRef int 46 47 err := rows.Scan( 48 &rl.Id, 49 &rl.RepoAt, 50 &rl.Ref, 51 + &isDefaultRef, 52 &rl.Language, 53 &rl.Bytes, 54 ) 55 if err != nil { 56 return nil, fmt.Errorf("failed to scan: %w ", err) 57 + } 58 + 59 + if isDefaultRef != 0 { 60 + rl.IsDefaultRef = true 61 } 62 63 langs = append(langs, rl) ··· 71 72 func InsertRepoLanguages(e Execer, langs []RepoLanguage) error { 73 stmt, err := e.Prepare( 74 + "insert or replace into repo_languages (repo_at, ref, is_default_ref, language, bytes) values (?, ?, ?, ?, ?)", 75 ) 76 if err != nil { 77 return err 78 } 79 80 for _, l := range langs { 81 + isDefaultRef := 0 82 + if l.IsDefaultRef { 83 + isDefaultRef = 1 84 + } 85 + 86 + _, err := stmt.Exec(l.RepoAt, l.Ref, isDefaultRef, l.Language, l.Bytes) 87 if err != nil { 88 return err 89 }
+9 -5
appview/repo/index.go
··· 123 } 124 } 125 126 - languageInfo, err := rp.getLanguageInfo(f, signedClient) 127 if err != nil { 128 log.Printf("failed to compute language percentages: %s", err) 129 // non-fatal ··· 158 func (rp *Repo) getLanguageInfo( 159 f *reporesolver.ResolvedRepo, 160 signedClient *knotclient.SignedClient, 161 ) ([]types.RepoLanguageDetails, error) { 162 // first attempt to fetch from db 163 langs, err := db.GetRepoLanguages( ··· 175 if ls == nil { 176 return nil, nil 177 } 178 for l, s := range ls.Languages { 179 langs = append(langs, db.RepoLanguage{ 180 - RepoAt: f.RepoAt, 181 - Ref: f.Ref, 182 - Language: l, 183 - Bytes: s, 184 }) 185 } 186
··· 123 } 124 } 125 126 + // TODO: a bit dirty 127 + languageInfo, err := rp.getLanguageInfo(f, signedClient, chi.URLParam(r, "ref") == "") 128 if err != nil { 129 log.Printf("failed to compute language percentages: %s", err) 130 // non-fatal ··· 159 func (rp *Repo) getLanguageInfo( 160 f *reporesolver.ResolvedRepo, 161 signedClient *knotclient.SignedClient, 162 + isDefaultRef bool, 163 ) ([]types.RepoLanguageDetails, error) { 164 // first attempt to fetch from db 165 langs, err := db.GetRepoLanguages( ··· 177 if ls == nil { 178 return nil, nil 179 } 180 + 181 for l, s := range ls.Languages { 182 langs = append(langs, db.RepoLanguage{ 183 + RepoAt: f.RepoAt, 184 + Ref: f.Ref, 185 + IsDefaultRef: isDefaultRef, 186 + Language: l, 187 + Bytes: s, 188 }) 189 } 190
+5 -4
appview/state/knotstream.go
··· 159 } 160 161 langs = append(langs, db.RepoLanguage{ 162 - RepoAt: repo.RepoAt(), 163 - Ref: ref.Short(), 164 - Language: l.Lang, 165 - Bytes: l.Size, 166 }) 167 } 168
··· 159 } 160 161 langs = append(langs, db.RepoLanguage{ 162 + RepoAt: repo.RepoAt(), 163 + Ref: ref.Short(), 164 + IsDefaultRef: record.Meta.IsDefaultRef, 165 + Language: l.Lang, 166 + Bytes: l.Size, 167 }) 168 } 169