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