+1
appview/db/db.go
+1
appview/db/db.go
+20
-8
appview/db/language.go
+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
+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
+5
-4
appview/state/knotstream.go