62 lines
1.5 kB
1
package db
2
3
import "time"
4
5
type Repo struct {
6
Did string
7
Name string
8
Knot string
9
Created *time.Time
10
}
11
12
func (d *DB) GetAllReposByDid(did string) ([]Repo, error) {
13
var repos []Repo
14
15
rows, err := d.db.Query(`select did, name, knot, created from repos where did = ?`, did)
16
if err != nil {
17
return nil, err
18
}
19
defer rows.Close()
20
21
for rows.Next() {
22
var repo Repo
23
var createdAt string
24
if err := rows.Scan(&repo.Did, &repo.Name, &repo.Knot, &createdAt); err != nil {
25
return nil, err
26
}
27
createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
28
repo.Created = &createdAtTime
29
repos = append(repos, repo)
30
}
31
32
if err := rows.Err(); err != nil {
33
return nil, err
34
}
35
36
return repos, nil
37
}
38
39
func (d *DB) GetRepo(did, name string) (*Repo, error) {
40
var repo Repo
41
42
row := d.db.QueryRow(`select did, name, knot, created from repos where did = ? and name = ?`, did, name)
43
44
var createdAt string
45
if err := row.Scan(&repo.Did, &repo.Name, &repo.Knot, &createdAt); err != nil {
46
return nil, err
47
}
48
createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
49
repo.Created = &createdAtTime
50
51
return &repo, nil
52
}
53
54
func (d *DB) AddRepo(repo *Repo) error {
55
_, err := d.db.Exec(`insert into repos (did, name, knot) values (?, ?, ?)`, repo.Did, repo.Name, repo.Knot)
56
return err
57
}
58
59
func (d *DB) RemoveRepo(did, name, knot string) error {
60
_, err := d.db.Exec(`delete from repos where did = ? and name = ? and knot = ?`, did, name, knot)
61
return err
62
}
63