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