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
20 var knots []string
21 for rows.Next() {
22 var knot string
23 if err := rows.Scan(&knot); err != nil {
24 return nil, err
25 }
26 knots = append(knots, knot)
27 }
28
29 if err = rows.Err(); err != nil {
30 return nil, err
31 }
32
33 return knots, nil
34}
35
36func (d *DB) GetRepo(knot, owner, name string) (*Repo, error) {
37 var repo Repo
38
39 query := "select knot, owner, name from repos where knot = ? and owner = ? and name = ?"
40 err := d.DB.QueryRow(query, knot, owner, name).
41 Scan(&repo.Knot, &repo.Owner, &repo.Name)
42
43 if err != nil {
44 return nil, err
45 }
46
47 return &repo, nil
48}