forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
1package db
2
3import "time"
4
5type Repo struct {
6 Did string
7 Name string
8 Knot string
9 Created *time.Time
10}
11
12func (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
39func (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
54func (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
59func (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}