···
7
+
"github.com/bluesky-social/indigo/atproto/syntax"
10
+
type RepoLanguage struct {
18
+
func GetRepoLanguages(e Execer, filters ...filter) ([]RepoLanguage, error) {
19
+
var conditions []string
21
+
for _, filter := range filters {
22
+
conditions = append(conditions, filter.Condition())
23
+
args = append(args, filter.Arg()...)
27
+
if conditions != nil {
28
+
whereClause = " where " + strings.Join(conditions, " and ")
31
+
query := fmt.Sprintf(
32
+
`select id, repo_at, ref, language, bytes from repo_languages %s`,
35
+
rows, err := e.Query(query, args...)
38
+
return nil, fmt.Errorf("failed to execute query: %w ", err)
41
+
var langs []RepoLanguage
53
+
return nil, fmt.Errorf("failed to scan: %w ", err)
56
+
langs = append(langs, rl)
58
+
if err = rows.Err(); err != nil {
59
+
return nil, fmt.Errorf("failed to scan rows: %w ", err)
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 (?, ?, ?, ?)",
73
+
for _, l := range langs {
74
+
_, err := stmt.Exec(l.RepoAt, l.Ref, l.Language, l.Bytes)