Monorepo for Tangled
tangled.org
1package db
2
3type Repo struct {
4 Knot string
5 Owner string
6 Name string
7}
8
9func (d *DB) AddRepo(knot, owner, name string) error {
10 _, err := d.Exec(`insert or ignore into repos (knot, owner, name) values (?, ?, ?)`, knot, owner, name)
11 return err
12}
13
14func (d *DB) Knots() ([]string, error) {
15 rows, err := d.Query(`select knot from repos`)
16 if err != nil {
17 return nil, err
18 }
19 defer rows.Close()
20
21 var knots []string
22 for rows.Next() {
23 var knot string
24 if err := rows.Scan(&knot); err != nil {
25 return nil, err
26 }
27 knots = append(knots, knot)
28 }
29
30 if err = rows.Err(); err != nil {
31 return nil, err
32 }
33
34 return knots, nil
35}
36
37func (d *DB) GetRepo(knot, owner, name string) (*Repo, error) {
38 var repo Repo
39
40 query := "select knot, owner, name from repos where knot = ? and owner = ? and name = ?"
41 err := d.DB.QueryRow(query, knot, owner, name).
42 Scan(&repo.Knot, &repo.Owner, &repo.Name)
43
44 if err != nil {
45 return nil, err
46 }
47
48 return &repo, nil
49}