···
+
"github.com/bluesky-social/indigo/atproto/syntax"
+
type RepoLanguage struct {
+
func GetRepoLanguages(e Execer, filters ...filter) ([]RepoLanguage, error) {
+
var conditions []string
+
for _, filter := range filters {
+
conditions = append(conditions, filter.Condition())
+
args = append(args, filter.Arg()...)
+
whereClause = " where " + strings.Join(conditions, " and ")
+
`select id, repo_at, ref, language, bytes from repo_languages %s`,
+
rows, err := e.Query(query, args...)
+
return nil, fmt.Errorf("failed to execute query: %w ", err)
+
var langs []RepoLanguage
+
return nil, fmt.Errorf("failed to scan: %w ", err)
+
langs = append(langs, rl)
+
if err = rows.Err(); err != nil {
+
return nil, fmt.Errorf("failed to scan rows: %w ", err)
+
func InsertRepoLanguages(e Execer, langs []RepoLanguage) error {
+
stmt, err := e.Prepare(
+
"insert or replace into repo_languages (repo_at, ref, language, bytes) values (?, ?, ?, ?)",
+
for _, l := range langs {
+
_, err := stmt.Exec(l.RepoAt, l.Ref, l.Language, l.Bytes)