forked from
tangled.org/core
fork
Configure Feed
Select the types of activity you want to include in your feed.
Monorepo for Tangled
fork
Configure Feed
Select the types of activity you want to include in your feed.
1package db
2
3import (
4 "encoding/json"
5 "time"
6)
7
8func AddPublicKey(e Execer, did, name, key, rkey string) error {
9 _, err := e.Exec(
10 `insert or ignore into public_keys (did, name, key, rkey)
11 values (?, ?, ?, ?)`,
12 did, name, key, rkey)
13 return err
14}
15
16func RemovePublicKey(e Execer, did, name, key string) error {
17 _, err := e.Exec(`
18 delete from public_keys
19 where did = ? and name = ? and key = ?`,
20 did, name, key)
21 return err
22}
23
24type PublicKey struct {
25 Did string `json:"did"`
26 Key string `json:"key"`
27 Name string `json:"name"`
28 Rkey string `json:"rkey"`
29 Created *time.Time
30}
31
32func (p PublicKey) MarshalJSON() ([]byte, error) {
33 type Alias PublicKey
34 return json.Marshal(&struct {
35 Created string `json:"created"`
36 *Alias
37 }{
38 Created: p.Created.Format(time.RFC3339),
39 Alias: (*Alias)(&p),
40 })
41}
42
43func GetAllPublicKeys(e Execer) ([]PublicKey, error) {
44 var keys []PublicKey
45
46 rows, err := e.Query(`select key, name, did, rkey, created from public_keys`)
47 if err != nil {
48 return nil, err
49 }
50 defer rows.Close()
51
52 for rows.Next() {
53 var publicKey PublicKey
54 var createdAt string
55 if err := rows.Scan(&publicKey.Key, &publicKey.Name, &publicKey.Did, &publicKey.Rkey, &createdAt); err != nil {
56 return nil, err
57 }
58 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
59 publicKey.Created = &createdAtTime
60 keys = append(keys, publicKey)
61 }
62
63 if err := rows.Err(); err != nil {
64 return nil, err
65 }
66
67 return keys, nil
68}
69
70func GetPublicKeys(e Execer, did string) ([]PublicKey, error) {
71 var keys []PublicKey
72
73 rows, err := e.Query(`select did, key, name, rkey, created from public_keys where did = ?`, did)
74 if err != nil {
75 return nil, err
76 }
77 defer rows.Close()
78
79 for rows.Next() {
80 var publicKey PublicKey
81 var createdAt string
82 if err := rows.Scan(&publicKey.Did, &publicKey.Key, &publicKey.Name, &publicKey.Rkey, &createdAt); err != nil {
83 return nil, err
84 }
85 createdAtTime, _ := time.Parse(time.RFC3339, createdAt)
86 publicKey.Created = &createdAtTime
87 keys = append(keys, publicKey)
88 }
89
90 if err := rows.Err(); err != nil {
91 return nil, err
92 }
93
94 return keys, nil
95}